Gymterview
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-строки будут исключены из результата (они не исключаются).