Вопрос проверяет понимание агрегирования данных в SQL и правил формирования корректных запросов с группировкой.
GROUP BY используется для группировки строк по одному или нескольким столбцам с последующим применением агрегатных функций. Все поля в SELECT, которые не являются агрегатами, должны присутствовать в GROUP BY. Нарушение этого правила приводит к ошибке или неопределённому результату. GROUP BY меняет семантику запроса с построчной на групповую. Использовать его нужно осознанно.
GROUP BY — базовый инструмент аналитических запросов.
GROUP BY — это оператор SQL, который объединяет строки с одинаковыми значениями указанных столбцов в группы.
GROUP BYЗапрос выполняется в логической последовательности.
FROM
WHERE
GROUP BY
Агрегация
HAVING
SELECT
ORDER BY
Перед перечислением важно помнить, что результат запроса формируется на уровне групп.
Все поля в SELECT должны быть:
либо агрегатными
либо присутствовать в GROUP BY
WHERE фильтрует строки до группировки
HAVING фильтрует уже сформированные группы
Пример корректного запроса:
SELECT status, COUNT(*)
FROM orders
GROUP BY status;
Использование поля в SELECT, которого нет в GROUP BY
Попытка фильтровать агрегаты через WHERE
Непонимание разницы между WHERE и HAVING
Может потребовать сортировки или хэширования
Большие группы — высокая нагрузка
Индексы помогают не всегда
GROUP BY — мощный, но строгий инструмент. Он требует соблюдения правил выбора полей и понимания этапов выполнения запроса.