junior
Как GROUP BY обрабатывает значение NULL?
При использовании GROUP BY все значения NULL считаются равными друг другу и объединяются в одну группу. Это единственное место в SQL, где NULL = NULL — во всех остальных контекстах результат сравнения NULL с NULL даёт NULL.
Пример
-- Если в столбце department есть строки с NULL, они попадут в одну группу
SELECT department, COUNT(*) AS cnt
FROM employees
GROUP BY department;
-- Результат может содержать строку:
-- department | cnt
-- NULL | 3
Такое поведение определено стандартом SQL и одинаково работает во всех основных СУБД (PostgreSQL, MySQL, Oracle, SQL Server). Это логично с практической точки зрения: если NULL означает «неизвестный отдел», то все сотрудники без отдела попадают в одну группу «неизвестных».
На собеседовании: достаточно сказать, что
NULL-значения при группировке считаются равными и попадают в одну группу. Частая ошибка — предположить, чтоNULL-строки будут исключены из результата (они не исключаются).