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_number first_name last_name salary dept_id
1001 Justin Bieber 62000 500
1002 Selena Gomez 57500 500
1003 Mila Kunis 71000 501
1004 Tom Cruise 42000 501

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

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

dept_id total_salaries
500 119500
501 113000

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

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

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

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

product_id product_name category_id
1 Pear 50
2 Banana 50
3 Orange 50
4 Apple 50
5 Bread 75
6 Sliced Ham 25
7 Kleenex NULL

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

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

category_id total_products
25 1
50 4
75 1

В этом примере мы использовали функцию 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_number first_name last_name salary dept_id
1001 Justin Bieber 62000 500
1002 Selena Gomez 57500 500
1003 Mila Kunis 71000 501
1004 Tom Cruise 42000 501

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

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

dept_id lowest_salary
500 57500
501 42000

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

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

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

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

employee_number first_name last_name salary dept_id
1001 Justin Bieber 62000 500
1002 Selena Gomez 57500 500
1003 Mila Kunis 71000 501
1004 Tom Cruise 42000 501

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

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

dept_id highest_salary
500 62000
501 71000

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