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