Считаешь итоговую выплату сотруднику как
salary + bonus? Если премии нет (в базе лежит NULL), математика сыграет злую шутку, и человек останется вообще без денег в итоговом отчёте. ⚠️ Ловушка прямого сложения
🔹
NULL — это не ноль, а полная «неизвестность». 🔹 Любая математическая операция с неизвестностью заражает итог. Если оклад 1000, а бонус
NULL, выражение 1000 + NULL вернёт пустоту (NULL). 🛡 Почему SUM() ведёт себя иначе
🔸 Агрегатные функции (
SUM(), AVG()) созданы для работы с группами строк и спроектированы так, чтобы игнорировать пустые ячейки.🔸 Если сделать
SUM(bonus) для значений 100, 200 и NULL, функция просто перешагнёт через пустоту и спокойно выдаст 300.🚀 Как спасти строчные вычисления
Используй
COALESCE — функцию, которая перехватит NULL и заменит его на запасной вариант.SELECT
salary + COALESCE(bonus, 0) AS total_pay
FROM employees;
💡 При прямом сложении колонок всегда страхуй необязательные поля нулём, чтобы пустота не съела твои данные.



