Вступ до пункту GROUP BY у SQL

У випадках, коли нам потрібно згрупувати рядки з однаковим значенням, пункт «За групою» потрапляє на малюнок. Становище 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. ЗАМОВЛЕННЯ - завжди використовується за груповою умовою за упорядкуванням рядків у порядку зростання чи спадання. Це необов'язкова умова.

Як пункт GROUP BY працює в SQL?

Для того, щоб зрозуміти роботу Групи за пунктом, скористаємось прикладом. Розглянемо таблицю з іменем EMPLOYEE, яка містить основні дані працівника, такі як ім'я, вік, номер телефону, dob, стать, адреса, ідентифікатор електронної пошти тощо.

Стіл працівників

назвавіктелефонСтатьелектронною поштою
Джон23123Чоловік
Може22456Жіночий
Ана45644Жіночий
Горщики573456Жіночий
Рез45456Жіночий
Засмага782456Чоловік
Побіг345899Чоловік
Ван557789Жіночий
Tung325689Чоловік
Чунг214678Чоловік

Врахуйте, що ПРАЦІВНИК має близько 10 записів.

Давайте спочатку отримаємо різні значення "статі" з цієї таблиці. Запит, який допоможе нам досягти нашої мети, -

SELECT gender FROM EMPLOYEE;

Це дасть нам такі значення-

Стать
Чоловік
Жіночий
Жіночий
Жіночий
Жіночий
Чоловік
Чоловік
Жіночий
Чоловік
Чоловік

Проблема тут полягає в надмірності значень, тобто, як ми бачимо, у таблиці є лише два унікальних значення статі, але вихід не дає нам лише унікальних значень, а всі значення, навіть якщо вони повторюються.

Отже, щоб отримати лише унікальні значення з таблиці, ми будемо використовувати наступний запит -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Результат, який ми отримаємо після виконання цього запиту, буде -

Стать
Чоловік
Жіночий

Group By згрупує всі однакові значення у рядках разом і поверне лише один запис або один рядок для них, як це було з рядками "Чоловічий" та "Жіночий" у таблиці. Це призвело лише до двох унікальних значень, які були присутні у графі "гендер" i, e. Жінки та чоловіки.

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

Таблиця відділу працівників

назваходвідділ
Джонhod1Сервіс
Можеhod2Фінанси
Анаhod1Сервіс
Горщикиhod2Фінанси
Резhod3Техн
Засмагаhod5Підтримка
Побігhod3Сервіс
Ванhod3Техн
Tunghod3Фінанси
Чунгhod5HR

Тож тепер давайте виконаємо наведений нижче запит і шукатимемо результат -

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

Виконання цього запиту отримує такий результат -

ходвідділ
hod1Сервіс
hod2Фінанси
hod3Техн
hod5Підтримка
hod3Сервіс
hod3Фінанси
hod5HR

Розділ GROUP BY функціонує як у hod, так і у відділі, щоб шукати унікальні рядки у вищезгаданому сценарії. Він перевірить комбінацію ходу та відділу на предмет інших записів ходу та відділу, щоб виявити його унікальність. Якщо ход однаковий, але відділ інший, то цей рядок трактується як унікальний. Якщо ход і відділ однакові для більш ніж одного рядка, то копія запису не створюється і відображається лише один рядок.

ГРУППУ ПО Операційним пунктам

Ми можемо використовувати груповий пункт за допомогою декількох функцій групування та сукупності. Візьмемо декілька прикладів, використовуючи дві вищезгадані таблиці, тобто 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Жіночий
Горщики573456Жіночий
Рез45456Жіночий
Ван557789Жіночий

Приклад №5

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

Виконання цього запиту отримує такий результат -

назваходвідділ
Можеhod2Фінанси
Горщикиhod2Фінанси
Tunghod3Фінанси

Висновок

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

Рекомендовані статті

Це посібник із пункту GROUP BY у SQL. Тут ми обговорюємо, як «GROUP BY Clause» працює в SQL за допомогою таблиць Приклади та Співробітники. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. SQL Insert Query
  2. Перегляди SQL
  3. База даних у SQL
  4. Операції в SQL