Введение в предложение 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