Правило SQL про GROUP BY, которое должен знать каждый
Если ты выбираешь в SELECT неагрегированные колонки, добавь их в GROUP BY. Это не просто хорошая практика, в некоторых СУБД без этого будет ошибка.
Почему это важно? Потому что GROUP BY определяет, что именно значит одна строка результата. Базе нужно понимать, какое единственное значение положить в каждую ячейку этой строки.
В примере выше одна строка = должность (job_title) внутри отдела (department).
Поэтому и department, и job_title обязаны быть в GROUP BY.
Если неагрегированную колонку не добавить:
❌часть баз сразу упадет с ошибкой
❌другие молча вернут случайные значения
❌запрос может "работать" сегодня и врать завтра
Общее правило: Каждая колонка в SELECT должна быть функционально зависима от GROUP BY. Если внутри группы у колонки может быть несколько значений, она не может появляться в SELECT, пока:
- ты не добавил ее в GROUP BY, или
- не завернул в агрегатную функцию.
👉 @SQLPortal
Post #1527
2.5K

- 👍 6
- ❤ 1