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
- Instrukcja SELECT - zapytanie polecenia SQL
- nazwa_tabeli - nazwa przywoływanej tabeli bazy danych
- warunki - odnoszą się do warunków, które należy sprawdzić
- GROUP BY - klauzula grupująca te same wiersze razem
- 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
Nazwa | wiek | telefon | płeć | |
Jan | 23 | 123 | Męski | |
Może | 22 | 456 | Płeć żeńska | |
Ana | 45 | 644 | Płeć żeńska | |
Garnki | 57 | 3456 | Płeć żeńska | |
Res | 45 | 456 | Płeć żeńska | |
Dębnik | 78 | 2456 | Męski | |
Biegł | 34 | 5899 | Męski | |
blady | 55 | 7789 | Płeć żeńska | |
Tung | 32 | 5689 | Męski | |
Chung | 21 | 4678 | Mę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
Nazwa | taczki | departament |
Jan | hod1 | Usługa |
Może | hod2 | Finanse |
Ana | hod1 | Usługa |
Garnki | hod2 | Finanse |
Res | hod3 | Tech |
Dębnik | hod5 | Wsparcie |
Biegł | hod3 | Usługa |
blady | hod3 | Tech |
Tung | hod3 | Finanse |
Chung | hod5 | HR |
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 -
taczki | departament |
hod1 | Usługa |
hod2 | Finanse |
hod3 | Tech |
hod5 | Wsparcie |
hod3 | Usługa |
hod3 | Finanse |
hod5 | HR |
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ć |
5 | Męski |
5 | Pł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 |
1 | Wsparcie |
1 | HR |
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”) | taczki | departament |
2) | hod1 | Usługa |
2) | hod2 | Finanse |
2) | hod3 | Tech |
1 | hod5 | Wsparcie |
1 | hod3 | Usługa |
1 | hod3 | Finanse |
1 | hod5 | HR |
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 -
Nazwa | wiek | telefon | płeć | |
Może | 22 | 456 | Płeć żeńska | |
Ana | 45 | 644 | Płeć żeńska | |
Garnki | 57 | 3456 | Płeć żeńska | |
Res | 45 | 456 | Płeć żeńska | |
blady | 55 | 7789 | Pł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 -
Nazwa | taczki | departament |
Może | hod2 | Finanse |
Garnki | hod2 | Finanse |
Tung | hod3 | Finanse |
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 -
- Zapytanie wstawiania SQL
- Widoki SQL
- Baza danych w SQL
- Transakcje w SQL