Математика с подвохом: почему сложение обнуляет зарплату, а SUM()… — SQL Academy: всё о реляционных БД и SQL — TG.ME

🧮 Математика с подвохом: почему сложение обнуляет зарплату, а SUM() — нет

Считаешь итоговую выплату сотруднику как 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;


💡 При прямом сложении колонок всегда страхуй необязательные поля нулём, чтобы пустота не съела твои данные.
👍38❤7🤯5🔥1
July 20, 2026 4.1K 13