В чем разница между операторами GROUP BY и ORDER BY в SQL?

Ответ

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. Сначала данные группируются, а уже затем сгруппированный результат сортируется.