
Введение в предложение GROUP BY в SQL
Для случаев, когда нам нужно сгруппировать строки с одинаковым значением, в группу входит предложение Group By. Предложение GROUP BY - это команда в SQL, которая будет выполнять эту операцию.
Здесь важно помнить, что предложение GROUP BY используется в операторе SELECT в запросе после использования предложения WHERE.
Синтаксис
Синтаксис для предложения Group By -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Объяснение синтаксиса
- Оператор SELECT - запрос команды SQL
- table_name - имя таблицы базы данных, на которую ссылаются
- условия - обратитесь к условиям для проверки
- GROUP BY - предложение для группировки одинаковых строк
- ORDER BY - всегда используется после предложения Group By для упорядочения строк в порядке возрастания или убывания. Это необязательное условие.
Как GROUP BY Clause работает в SQL?
Чтобы понять работу предложения Group By, воспользуемся примером. Рассмотрим таблицу с именем EMPLOYEE, в которой содержатся основные сведения о сотруднике, такие как имя, возраст, номер телефона, должность, пол, адрес, идентификатор электронной почты и т. Д.
Стол сотрудника
| имя | возраст | Телефон | Пол | Эл. адрес |
| Джон | 23 | 123 | мужчина | |
| май | 22 | 456 | женский | |
| изречений | 45 | 644 | женский | |
| Горшки | 57 | +3456 | женский | |
| Res | 45 | 456 | женский | |
| загар | 78 | 2456 | мужчина | |
| Ран | 34 | 5899 | мужчина | |
| Ван | 55 | 7789 | женский | |
| Tung | 32 | 5689 | мужчина | |
| Chung | 21 | 4678 | мужчина |
Предположим, у СОТРУДНИКА около 10 записей.
Давайте сначала получим различные значения «пола» из этой таблицы. Запрос, который поможет нам получить нашу цель:
SELECT gender FROM EMPLOYEE;
Это даст нам следующие значения:
| Пол |
| мужчина |
| женский |
| женский |
| женский |
| женский |
| мужчина |
| мужчина |
| женский |
| мужчина |
| мужчина |
Проблема здесь заключается в избыточности значений, то есть, как мы видим, в таблице есть только два уникальных значения полов, но выходные данные дают нам не только уникальные значения, но и все значения, даже если они повторяются.
Итак, чтобы получить только уникальные значения из таблицы, мы будем использовать следующий запрос -
SELECT gender FROM EMPLOYEE GROUP BY gender;
Результат, который мы получим после выполнения этого запроса, будет:
| Пол |
| мужчина |
| женский |
Group By сгруппирует все одинаковые значения в строках вместе и вернет для них только одну запись или одну строку, как это было со строками «Male» и «Female» в таблице. Это привело к тому, что в столбце «пол», т.е. Женщина и Мужчина.
Теперь давайте возьмем другой пример таблицы, в которой содержатся сведения об отделе, с которым связан каждый из этих сотрудников. Мы назовем это таблицей Employee_Department.
Стол отдела сотрудников
| имя | корыто | отдел |
| Джон | hod1 | обслуживание |
| май | hod2 | финансов |
| изречений | hod1 | обслуживание |
| Горшки | hod2 | финансов |
| Res | hod3 | Технология |
| загар | hod5 | Служба поддержки |
| Ран | hod3 | обслуживание |
| Ван | hod3 | Технология |
| Tung | hod3 | финансов |
| Chung | hod5 | HR |
Итак, теперь давайте выполним приведенный ниже запрос и посмотрим на результат:
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
Выполнение этого запроса извлекает следующий результат -
| корыто | отдел |
| hod1 | обслуживание |
| hod2 | финансов |
| hod3 | Технология |
| hod5 | Служба поддержки |
| hod3 | обслуживание |
| hod3 | финансов |
| hod5 | HR |
Предложение GROUP BY функционирует как в hod, так и в отделе, чтобы искать уникальные строки в вышеупомянутом сценарии. Он проверит комбинацию узла и отдела относительно других записей узла и отдела, чтобы определить его уникальность. Если код такой же, а отдел другой, то этот ряд считается уникальным. Если узел и отдел одинаковы для нескольких строк, дублирующаяся запись не создается и отображается только одна строка.
Операции с предложениями GROUP BY
Мы можем использовать предложение Group By с несколькими функциями группировки и агрегирования. Давайте возьмем несколько примеров, используя две вышеупомянутые таблицы, т. Е. EMPLOYEE и Employee_Department.
Пример № 1
Получение подсчета работников мужского и женского пола в компании.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
Выполнение этого запроса извлекает следующий результат -
| COUNT ( 'имя') | Пол |
| 5 | мужчина |
| 5 | женский |
Пример № 2
Получение подсчета отделов в компании в порядке убывания отсчета.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
Выполнение этого запроса извлекает следующий результат -
| COUNT ( 'имя') | отдел |
| 3 | обслуживание |
| 3 | финансов |
| 2 | Технология |
| 1 | Служба поддержки |
| 1 | HR |
Пример № 3
Получение подсчета разных отделов под одним и тем же узлом в компании в порядке убывания подсчета.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
Выполнение этого запроса извлекает следующий результат -
| COUNT ( 'имя') | корыто | отдел |
| 2 | hod1 | обслуживание |
| 2 | hod2 | финансов |
| 2 | hod3 | Технология |
| 1 | hod5 | Служба поддержки |
| 1 | hod3 | обслуживание |
| 1 | hod3 | финансов |
| 1 | hod5 | HR |
Предложение HAVING в SQL
Использование предложения HAVING с предложением Group By ограничит результат запроса строками, значение которых указано в предложении Have.
Понимание этого на примере облегчит задачу -
Пример № 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
Выполнение этого запроса извлекает следующий результат -
| имя | возраст | Телефон | Пол | Эл. адрес |
| май | 22 | 456 | женский | |
| изречений | 45 | 644 | женский | |
| Горшки | 57 | +3456 | женский | |
| Res | 45 | 456 | женский | |
| Ван | 55 | 7789 | женский |
Пример № 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Выполнение этого запроса извлекает следующий результат -
| имя | корыто | отдел |
| май | hod2 | финансов |
| Горшки | hod2 | финансов |
| Tung | hod3 | финансов |
Вывод
Используя предложение GROUP BY с оператором SELECT, мы можем группировать строки с одинаковыми значениями наряду с использованием агрегатных функций, констант и выражений.
Рекомендуемые статьи
Это руководство к предложению GROUP BY в SQL. Здесь мы обсудим, как предложение GROUP BY в SQL работает с помощью примеров и таблиц Employee. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -
- SQL Вставить Запрос
- Представления SQL
- База данных в SQL
- Транзакции в SQL