SQL оператор GROUP BY

В этом учебном материале вы узнаете, как использовать SQL оператор GROUP BY с синтаксисом и примерами.

Описание

SQL оператор GROUP BY можно использовать в операторе SELECT для сбора данных по нескольким записям и группировки результатов по одному или нескольким столбцам.

Синтаксис

Синтаксис оператора GROUP BY в SQL:

SELECT expression1, expression2, … expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, … expression_n
[ORDER BY expression [ ASC | DESC ]];

Параметры или аргументы

expression1, expression2, … expression_n
Выражения, которые не инкапсулированы в агрегатную функцию и должны быть включены в GROUP BY в конце SQL-запроса.
aggregate_function
Это агрегатная функция, такая как SUM, COUNT, MIN, MAX или AVG.
aggregate_expression
Это столбец или выражение, для которого будет использоваться aggregate_function.
tables
Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица.
WHERE conditions
Необязательный. Это условия, которые должны быть выполнены для выбора записей.
ORDER BY expression
Необязательный. Выражение, используемое для сортировки записей в наборе результатов. Если указано более одного выражения, значения должны быть разделены запятыми.
ASC
Необязательный. ASC сортирует результирующий набор в порядке возрастания по expression. Это поведение по умолчанию, если модификатор не указан.
DESC
Необязательный. DESC сортирует результирующий набор в порядке убывания по expression.

Пример — использование GROUP BY с функцией SUM

Давайте посмотрим, как использовать GROUP BY с функцией SUM в SQL.
В этом примере у нас есть таблица employees со следующими данными:

employee_numberfirst_namelast_namesalarydept_id
1001JustinBieber62000500
1002SelenaGomez57500500
1003MilaKunis71000501
1004TomCruise42000501

Введите следующий SQL оператор:

Будет выбрано 2 записи. Вот результаты, которые вы получите:

dept_idtotal_salaries
500119500
501113000

В этом примере мы использовали функцию SUM, чтобы сложить все зарплаты для каждого dept_id, и мы результатам SUM(salary) указали псевдоним «total_salaries». Поскольку dept_id не инкапсулирован в функцию SUM, он должен быть указан в предложении GROUP BY.

Пример — использование GROUP BY с функцией COUNT

Давайте посмотрим, как использовать предложение GROUP BY с функцией COUNT в SQL.

В этом примере у нас есть таблица products со следующими данными:

product_idproduct_namecategory_id
1Pear50
2Banana50
3Orange50
4Apple50
5Bread75
6Sliced Ham25
7KleenexNULL

Введите следующий SQL оператор:

Будет выбрано 3 записи. Вот результаты, которые вы должны получить:

category_idtotal_products
251
504
751

В этом примере мы использовали функцию COUNT для вычисления количества total_products для каждого category_id, и мы указали псевдоним «total_products» как результаты функции COUNT. Мы исключили все значения category_id, которые имеют значение NULL, отфильтровав их в предложении WHERE. Поскольку category_id не инкапсулирован в функции COUNT, он должен быть указан в предложении GROUP BY.

Пример — использование GROUP BY с функцией MIN

Давайте теперь посмотрим, как использовать предложение GROUP BY с функцией MIN в SQL.

В этом примере мы снова будем использовать таблицу employees со следующими данными:

employee_numberfirst_namelast_namesalarydept_id
1001JustinBieber62000500
1002SelenaGomez57500500
1003MilaKunis71000501
1004TomCruise42000501

Введите следующий SQL оператор:

Будет выбрано 2 записи. Вот результаты, которые вы получите:

dept_idlowest_salary
50057500
50142000

В этом примере мы использовали функцию MIN, чтобы вернуть самое минимальное значение salary для каждого dept_id, и мы присвоили результатам функции MIN <а> псевдоним «lowest_salary». Поскольку dept_id не инкапсулирован в функцию MIN, он должен быть указан в предложении GROUP BY.

Пример — использование GROUP BY с функцией MAX

Наконец, давайте посмотрим, как использовать предложение GROUP BY с функцией MAX.

Давайте снова воспользуемся таблицей employees, но на этот раз найдем самую максимальную зарплату для каждого dept_id:

employee_numberfirst_namelast_namesalarydept_id
1001JustinBieber62000500
1002SelenaGomez57500500
1003MilaKunis71000501
1004TomCruise42000501

Введите следующий SQL оператор:

Будет выбрано 2 записи. Вот результаты, которые вы должны получить:

dept_idhighest_salary
50062000
50171000

В этом примере мы использовали функцию MAX, чтобы вернуть самое максимальное значение salary для каждого dept_id, и мы присвоили псевдоним «highest_salary» результату функции MAX. Столбец dept_id должен быть указан в предложении GROUP BY, поскольку он не инкапсулирован в функции MAX.