Wprowadzenie do klauzuli GROUP BY w SQL

W przypadkach, w których musimy pogrupować wiersze o tej samej wartości, klauzula Group By pojawia się na zdjęciu. Klauzula GROUP BY to polecenie SQL, które wykona tę operację.

Ważne jest, aby pamiętać tutaj, że klauzula GROUP BY jest używana w instrukcji SELECT w zapytaniu po użyciu klauzuli WHERE.

Składnia

Składnia klauzuli Group By to -

SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;

Objaśnienie składni

  1. Instrukcja SELECT - zapytanie polecenia SQL
  2. nazwa_tabeli - nazwa przywoływanej tabeli bazy danych
  3. warunki - odnoszą się do warunków, które należy sprawdzić
  4. GROUP BY - klauzula grupująca te same wiersze razem
  5. ORDER BY - zawsze używany po klauzuli Group By do uporządkowania wierszy w porządku rosnącym lub malejącym. Jest to warunek opcjonalny.

Jak klauzula GROUP BY działa w SQL?

Aby zrozumieć działanie klauzuli Group By, skorzystajmy z przykładu. Rozważ tabelę z imieniem i nazwiskiem PRACOWNIK, która zawiera podstawowe dane pracownika, takie jak imię i nazwisko, wiek, numer telefonu, dobro, płeć, adres, identyfikator e-maila itp.

Tabela pracowników

Nazwawiektelefonpłeće-mail
Jan23123Męski
Może22456Płeć żeńska
Ana45644Płeć żeńska
Garnki573456Płeć żeńska
Res45456Płeć żeńska
Dębnik782456Męski
Biegł345899Męski
blady557789Płeć żeńska
Tung325689Męski
Chung214678Męski

Zastanów się, czy PRACODAWCA ma około 10 wpisów.

Najpierw uzyskajmy różne wartości „płci” z tej tabeli. Zapytaniem, które pomoże nam osiągnąć nasz cel, byłoby -

SELECT gender FROM EMPLOYEE;

To da nam następujące wartości

płeć
Męski
Płeć żeńska
Płeć żeńska
Płeć żeńska
Płeć żeńska
Męski
Męski
Płeć żeńska
Męski
Męski

Problemem jest nadmiarowość wartości, tzn. Jak widzimy, w tabeli są tylko dwie unikalne wartości płci, ale dane wyjściowe nie tylko dają nam unikalne wartości, ale wszystkie wartości, nawet jeśli są powtarzalne.

Tak więc, aby uzyskać tylko unikalne wartości z tabeli, użyjemy następującego zapytania -

SELECT gender FROM EMPLOYEE GROUP BY gender;

Wynik, który otrzymamy po wykonaniu tego zapytania, będzie -

płeć
Męski
Płeć żeńska

Grupuj według grupuje wszystkie te same wartości w wierszach razem i zwraca dla nich tylko jeden wpis lub pojedynczy wiersz, tak jak w przypadku wierszy „Mężczyzna” i „Kobieta” w tabeli. Spowodowało to tylko dwie unikalne wartości, które były obecne w kolumnie „płeć”, tj. Kobieta i mężczyzna.

Teraz weźmy inny przykład tabeli, która zawiera szczegóły działu, z którym każdy z tych pracowników jest powiązany. Nazwiemy to tabelą Pracownik_Dział.

Tabela działu pracowników

Nazwataczkidepartament
Janhod1Usługa
Możehod2Finanse
Anahod1Usługa
Garnkihod2Finanse
Reshod3Tech
Dębnikhod5Wsparcie
Biegłhod3Usługa
bladyhod3Tech
Tunghod3Finanse
Chunghod5HR

Teraz wykonajmy poniższe zapytanie i poszukajmy wyniku -

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

Wykonanie tego zapytania powoduje pobranie następującego wyniku -

taczkidepartament
hod1Usługa
hod2Finanse
hod3Tech
hod5Wsparcie
hod3Usługa
hod3Finanse
hod5HR

Klauzula GROUP BY działa zarówno na hod, jak i dziale, aby szukać unikalnych wierszy w wyżej wspomnianym scenariuszu. Sprawdzi kombinację hod i departamentu względem innych pozycji hod i departamentu, aby zidentyfikować jego wyjątkowość. Jeśli hod jest taki sam, ale dział jest inny, ten wiersz jest traktowany jako unikalny. Jeśli hod i dział są takie same dla więcej niż jednego wiersza, zduplikowany wpis nie jest tworzony i wyświetlany jest tylko jeden wiersz.

Grupuj według operacji klauzulowych

Możemy użyć klauzuli Group By z kilkoma funkcjami grupującymi i agregującymi. Weźmy kilka przykładów, wykorzystując powyższe dwie wspomniane tabele, tj. PRACOWNIK i Pracownik_Department.

Przykład 1

Uzyskiwanie liczby pracowników płci męskiej i żeńskiej w firmie.

SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;

Wykonanie tego zapytania powoduje pobranie następującego wyniku -

COUNT („nazwa”)płeć
5Męski
5Płeć żeńska

Przykład nr 2

Uzyskiwanie liczby działów w firmie w porządku malejącym według liczby.

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

Wykonanie tego zapytania powoduje pobranie następującego wyniku -

COUNT („nazwa”)departament
3)Usługa
3)Finanse
2)Tech
1Wsparcie
1HR

Przykład nr 3

Uzyskiwanie liczby różnych działów pod tym samym hodowaniem w firmie w porządku malejącym według liczby.

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

Wykonanie tego zapytania powoduje pobranie następującego wyniku -

COUNT („nazwa”)taczkidepartament
2)hod1Usługa
2)hod2Finanse
2)hod3Tech
1hod5Wsparcie
1hod3Usługa
1hod3Finanse
1hod5HR

Klauzula HAVING w SQL

Użycie klauzuli HAVING z klauzulą ​​Group By ograniczy wynik zapytania do wierszy o wartości wymienionej w klauzuli Have.

Zrozumienie tego na przykładzie ułatwi -

Przykład 4

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

Wykonanie tego zapytania powoduje pobranie następującego wyniku -

Nazwawiektelefonpłeće-mail
Może22456Płeć żeńska
Ana45644Płeć żeńska
Garnki573456Płeć żeńska
Res45456Płeć żeńska
blady557789Płeć żeńska

Przykład 5

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

Wykonanie tego zapytania powoduje pobranie następującego wyniku -

Nazwataczkidepartament
Możehod2Finanse
Garnkihod2Finanse
Tunghod3Finanse

Wniosek

Korzystając z klauzuli GROUP BY z instrukcją SELECT, możemy grupować wiersze o takich samych wartościach, używając funkcji agregujących, stałych i wyrażeń.

Polecane artykuły

Jest to przewodnik po klauzuli GROUP BY w SQL. Tutaj omawiamy, jak klauzula GROUP BY działa w SQL za pomocą przykładów i tabel pracowników. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Zapytanie wstawiania SQL
  2. Widoki SQL
  3. Baza danych w SQL
  4. Transakcje w SQL