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

Объяснение синтаксиса

  1. Оператор SELECT - запрос команды SQL
  2. table_name - имя таблицы базы данных, на которую ссылаются
  3. условия - обратитесь к условиям для проверки
  4. GROUP BY - предложение для группировки одинаковых строк
  5. ORDER BY - всегда используется после предложения Group By для упорядочения строк в порядке возрастания или убывания. Это необязательное условие.

Как GROUP BY Clause работает в SQL?

Чтобы понять работу предложения Group By, воспользуемся примером. Рассмотрим таблицу с именем EMPLOYEE, в которой содержатся основные сведения о сотруднике, такие как имя, возраст, номер телефона, должность, пол, адрес, идентификатор электронной почты и т. Д.

Стол сотрудника

имявозрастТелефонПолЭл. адрес
Джон23123мужчина
май22456женский
изречений45644женский
Горшки57+3456женский
Res45456женский
загар782456мужчина
Ран345899мужчина
Ван557789женский
Tung325689мужчина
Chung214678мужчина

Предположим, у СОТРУДНИКА около 10 записей.

Давайте сначала получим различные значения «пола» из этой таблицы. Запрос, который поможет нам получить нашу цель:

SELECT gender FROM EMPLOYEE;

Это даст нам следующие значения:

Пол
мужчина
женский
женский
женский
женский
мужчина
мужчина
женский
мужчина
мужчина

Проблема здесь заключается в избыточности значений, то есть, как мы видим, в таблице есть только два уникальных значения полов, но выходные данные дают нам не только уникальные значения, но и все значения, даже если они повторяются.

Итак, чтобы получить только уникальные значения из таблицы, мы будем использовать следующий запрос -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Результат, который мы получим после выполнения этого запроса, будет:

Пол
мужчина
женский

Group By сгруппирует все одинаковые значения в строках вместе и вернет для них только одну запись или одну строку, как это было со строками «Male» и «Female» в таблице. Это привело к тому, что в столбце «пол», т.е. Женщина и Мужчина.

Теперь давайте возьмем другой пример таблицы, в которой содержатся сведения об отделе, с которым связан каждый из этих сотрудников. Мы назовем это таблицей Employee_Department.

Стол отдела сотрудников

имякорытоотдел
Джонhod1обслуживание
майhod2финансов
изреченийhod1обслуживание
Горшкиhod2финансов
Reshod3Технология
загарhod5Служба поддержки
Ранhod3обслуживание
Ванhod3Технология
Tunghod3финансов
Chunghod5HR

Итак, теперь давайте выполним приведенный ниже запрос и посмотрим на результат:

SELECT hod, department FROM Employee_Department GROUP BY hod, department;

Выполнение этого запроса извлекает следующий результат -

корытоотдел
hod1обслуживание
hod2финансов
hod3Технология
hod5Служба поддержки
hod3обслуживание
hod3финансов
hod5HR

Предложение 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Служба поддержки
1HR

Пример № 3

Получение подсчета разных отделов под одним и тем же узлом в компании в порядке убывания подсчета.

SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;

Выполнение этого запроса извлекает следующий результат -

COUNT ( 'имя')корытоотдел
2hod1обслуживание
2hod2финансов
2hod3Технология
1hod5Служба поддержки
1hod3обслуживание
1hod3финансов
1hod5HR

Предложение HAVING в SQL

Использование предложения HAVING с предложением Group By ограничит результат запроса строками, значение которых указано в предложении Have.

Понимание этого на примере облегчит задачу -

Пример № 4

SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;

Выполнение этого запроса извлекает следующий результат -

имявозрастТелефонПолЭл. адрес
май22456женский
изречений45644женский
Горшки57+3456женский
Res45456женский
Ван557789женский

Пример № 5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

Выполнение этого запроса извлекает следующий результат -

имякорытоотдел
майhod2финансов
Горшкиhod2финансов
Tunghod3финансов

Вывод

Используя предложение GROUP BY с оператором SELECT, мы можем группировать строки с одинаковыми значениями наряду с использованием агрегатных функций, констант и выражений.

Рекомендуемые статьи

Это руководство к предложению GROUP BY в SQL. Здесь мы обсудим, как предложение GROUP BY в SQL работает с помощью примеров и таблиц Employee. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. SQL Вставить Запрос
  2. Представления SQL
  3. База данных в SQL
  4. Транзакции в SQL