Предложение SQL GROUP BY
Предложение GROUP BY
Предложение SQL GROUP BY используется для разделения строк в таблице на более мелкие группы.
Предложение GROUP BY используется с оператором SQL SELECT.
Группировка может произойти после извлечения строк из таблицы.
Когда некоторые строки извлекаются из сгруппированного результата в соответствии с некоторым условием, это возможно с помощью предложения HAVING.
Предложение GROUP BY используется с оператором SELECT, чтобы создать группу строк на основе значений определенного столбца или выражения. Функцию SQL AGGREGATE можно использовать для получения сводной информации по каждой группе, которая применяется к отдельной группе.
Предложение WHERE используется для извлечения строк на основе определенного условия, но его нельзя применить к сгруппированному результату.
Предположим, что в операторе SQL вы используете GROUP BY, при необходимости вы можете использовать HAVING вместо WHERE после GROUP BY.
Синтаксис:
SELECT <column_list> ОТ <имя таблицы> ГДЕ <условие> GROUP BY <столбцы> [HAVING] <условие>;
Параметры:
название | Описание |
---|---|
table_name | Наименование таблицы. |
column_list | Наименование столбцов таблицы. |
столбцы | Наименование столбцов, которые будут участвовать в группировке. |
Наглядное представление групп данных
Использование GROUP BY с агрегатными функциями
- Мощность агрегатных функций больше в сочетании с предложением GROUP BY.
- Предложение GROUP BY редко используется без агрегатной функции.
SQL GROUP BY с функцией COUNT ()
Следующий запрос отображает количество сотрудников, работающих в каждом отделе.
Пример таблицы: сотрудники
Код SQL:
SELECT department_id "Department Code",
COUNT(*) "No of Employees"
FROM employees
GROUP BY department_id;
Пример вывода:
Код отдела № сотрудников --------------- --------------- 100 6 30 6 1 90 3 20 2 70 1 110 2 50 45 80 34 40 1 60 5 10 1
SQL GROUP BY с функцией SUM ()
В следующем запросе отображается общая заработная плата, выплачиваемая сотрудникам, работающим в каждом отделе.
Пример таблицы: сотрудники
Код SQL:
SELECT department_id, SUM(salary)
FROM employees
GROUP BY department_id;
Пример вывода:
DEPARTMENT_ID SUM (SALARY) ------------- ----------- 100 51608 30 24900 7000 90 58000 20 19000 70 10000 110 20308 50 156400 80 304500 40 6500 60 28800 10 4400
SQL GROUP BY с функцией COUNT () и SUM ()
В следующем запросе отображается количество сотрудников, общая заработная плата, выплачиваемая сотрудникам, работающим в каждом отделе.
Пример таблицы: сотрудники
Код SQL:
SELECT department_id "Department Code",
COUNT(*) "No of Employees",
SUM(salary) "Total Salary"
FROM employees
GROUP BY department_id;
Пример вывода:
Код отдела № работников Общая зарплата --------------- --------------- ------------ 100 6 51608 30 6 24900 1 7000 90 3 58000 20 2 19000 70 1 10000 110 2 20308 50 45 156400 80 34 304500 40 1 6500 60 5 28800 10 1 4400
SQL GROUP BY на нескольких столбцах
В следующем запросе отображается код отдела, идентификатор задания, общая заработная плата, выплаченная группе сотрудников по департаменту_доставки, заданию_действия.
Пример таблицы: сотрудники
Код SQL:
SELECT department_id "Department Code", job_id,
SUM(salary) "Total Salary"
FROM employees
GROUP BY department_id,job_id;
Пример вывода:
Код отдела JOB_ID Общая зарплата --------------- ---------- ------------ 110 AC_ACCOUNT 8300 90 AD_VP 34000 50 ST_CLERK 55700 80 SA_REP 243500 50 ST_MAN 36400 80 SA_MAN 61000 110 AC_MGR 12008 90 AD_PRES 24000 60 IT_PROG 28800 100 FI_MGR 12008 30 PU_CLERK 13900 50 SH_CLERK 64300 20 MK_MAN 13000 100 FI_ACCOUNT 39600 SA_REP 7000 70 PR_REP 10000 30 PU_MAN 11000 10 AD_ASST 4400 20 MK_REP 6000 40 HR_REP 6500
SQL GROUP BY с предложением WHERE
В следующем запросе отображается код отдела, общая заработная плата, выплаченная группе сотрудников по департаменту_идентификатору и менеджеру = 103.
Пример таблицы: сотрудники
Код SQL:
SELECT department_id "Department Code",
SUM(salary) "Total Salary"
FROM employees
WHERE MANAGER_ID = 103
GROUP BY department_id;
Пример вывода:
Код отдела Общая зарплата --------------- ------------ 60 19800
SQL GROUP BY с предложением HAVING
В следующем запросе отображается идентификатор отдела, количество сотрудников из тех групп, в которых работают более 2 человек:
Пример таблицы: сотрудники
Код SQL:
SELECT department_id, count(*) "No. of Employee"
FROM employees
GROUP BY department_id
HAVING count(*)>2;
Пример вывода:
DEPARTMENT_ID № сотрудника ------------- --------------- 100 6 30 6 90 3 50 45 80 34 60 5
Упражнения по SQL
- Упражнения по SQL, практика, решение
- SQL Получить данные из таблиц [33 Упражнения]
- Булевы и реляционные операторы SQL [12 упражнений]
- Подстановочные знаки SQL и специальные операторы [22 упражнения]
- Агрегатные функции SQL [25 упражнений]
- Вывод запроса форматирования SQL [10 упражнений]
- SQL-запросы к нескольким таблицам [7 упражнений]
- ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
- SQL СОЕДИНЯЕТ
- SQL ПОДПИСИ
- SQL Union [9 упражнений]
- SQL View [16 упражнений]
- Управление учетными записями пользователей SQL [16 упражнение]
- База данных фильмов
- ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
- ПОДПИСКИ на фильм База данных [16 упражнений]
- ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
- Футбольная база
- Вступление
- ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
- ПОДПИСКИ по футбольной базе данных [33 упражнения]
- База данных больницы
- База данных сотрудников
- ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
- БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
- Еще не все!
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Новый контент: Composer: менеджер зависимостей для PHP , R программирования