Ответ
GROUP BY
и ORDER BY
— это два разных по назначению оператора в SQL, которые часто путают новички.
GROUP BY
(Группировка)
- Назначение: Объединяет строки с одинаковыми значениями в указанных столбцах в одну итоговую строку.
- Основная цель: Использование с агрегатными функциями (
COUNT
,SUM
,AVG
,MAX
,MIN
) для вычисления итогов по каждой группе. - Влияние на результат: Уменьшает количество строк в итоговой выборке.
-- Подсчет количества сотрудников в каждом отделе
SELECT department, COUNT(id)
FROM employees
GROUP BY department;
ORDER BY
(Сортировка)
- Назначение: Сортирует строки в итоговой выборке по одному или нескольким столбцам.
- Основная цель: Упорядочить результат для удобного отображения. Сортировка возможна по возрастанию (
ASC
, по умолчанию) или по убыванию (DESC
). - Влияние на результат: Не изменяет количество строк, а только меняет их порядок.
-- Вывод сотрудников, отсортированных по зарплате в порядке убывания
SELECT name, salary
FROM employees
ORDER BY salary DESC;
Ключевое отличие в порядке выполнения: В SQL-запросе GROUP BY
выполняется до ORDER BY
. Сначала данные группируются, а уже затем сгруппированный результат сортируется.