W przypadku dużej ilości danych często widzimy możliwość manipulowania danymi zgodnie z naszymi wymaganiami. Klauzula GROUP BY jest jedną z takich instrukcji w SQL, używaną do grupowania danych na podstawie kilku kolumn lub warunków. W tym artykule na temat instrukcji SQL GROUP BY omówię kilka sposobów użycia instrukcji GROUP BY w następującej kolejności:
- Oświadczenie GROUP BY
- Składnia
- Przykłady:
- Użyj GROUP BY w jednej kolumnie
- GROUP BY w wielu kolumnach
- Użyj GROUP BY z ORDER BY
- GROUP BY z klauzulą HAVING
- Użyj GROUP BY z JOINS
Zanim przejdziemy do przykładów użycia klauzuli GROUP BY, zrozummy, czym jest GROUP BY w SQL i jego składnią.
Oświadczenie SQL GROUP BY
Ta instrukcja służy do grupowania rekordów o tych samych wartościach. Instrukcja GROUP BY jest często używana z funkcjami agregacji do grupowania wyników według jednej lub większej liczby kolumn. Oprócz tego klauzula GROUP BY jest również używana z klauzulą HAVING i JOINS do grupowania zestawu wyników na podstawie warunków.
SQL GROUP BY Składnia
SELECT Column1, Column2,..., ColumnN FROM TableName WHERE Condition GROUP BY ColumnName(s) ORDER BY ColumnName(s);
Tutaj możesz dodać funkcje agregujące przed nazwami kolumn, a także klauzulę HAVING na końcu instrukcji, aby wspomnieć o warunku. Następnie, w tym artykule na temat SQL GROUP BY, wyjaśnijmy, jak zaimplementować to oświadczenie.
Przykłady:
Dla lepszego zrozumienia podzieliłem przykłady na następujące sekcje:
- Użyj GROUP BY w jednej kolumnie
- GROUP BY w wielu kolumnach
- Użyj GROUP BY z ORDER BY
- GROUP BY z klauzulą HAVING
- Użyj GROUP BY z JOINS
Rozważę poniższą tabelę, aby wyjaśnić Ci przykłady:
EmpID | EmpName | EmpEmail | Numer telefonu | Wynagrodzenie | Miasto |
1 | Nidhi | 9955669999 | 50000 | Bombaj | |
2 | Tak | 9875679861 | 55000 | Pune | |
3 | Rahul | 9876543212 | 35000 | Delhi | |
4 | Sonia | 9876543234 | 35000 | Delhi | |
5 | Akasz | 9866865686 | 25000 | Bombaj |
Przyjrzyjmy się każdemu z nich.
Użyj SQL GROUP BY na pojedynczej kolumnie
Przykład:
Napisz zapytanie, aby pobrać liczbę pracowników w każdym mieście.
SELECT COUNT(EmpID), City FROM Employees GROUP BY City;
Wyjście:
Zobaczysz następujące dane wyjściowe:
Count(EmpID) | Miasto |
2 | Delhi |
2 | Bombaj |
1 | Pune |
Użyj SQL GROUP BY na wielu kolumnach
Przykład:
Napisz zapytanie, aby pobrać liczbę pracowników o różnych zarobkach w każdym mieście.
SELECT City, Salary, Count(*) FROM Employees GROUP BY City, Salary;
Wyjście:
Tabela będzie zawierała następujące dane:
Miasto | Wynagrodzenie | Liczba(*) |
Delhi | 35000 | 2 |
Bombaj | 25000 | 1 |
Bombaj | 50000 | 1 |
Pune | 55000 | 1 |
Użyj SQL GROUP BY z ORDER BY
Kiedy używamy instrukcji SQL GROUP BY z klauzulą ORDER BY, wartości są sortowane w kolejności rosnącej lub malejącej.
Przykład:
Napisz zapytanie, aby pobrać liczbę pracowników w każdym mieście, posortowaną w porządku malejącym.
SELECT COUNT(EmpID), City FROM Employees GROUP BY City ORDER BY COUNT(EmpID) DESC;
Wyjście:
Tabela będzie zawierała następujące dane:
Count(EmpID) | Miasto |
2 | Delhi |
2 | Bombaj |
1 | Pune |
Użyj SQL GROUP BY z klauzulą HAVING
Instrukcja SQL GROUP BY jest używana z klauzulą „HAVING”, aby wymienić warunki dotyczące grup. Ponadto, ponieważ nie możemy używać funkcji agregujących z klauzulą WHERE, musimy użyć klauzuli „HAVING”, aby użyć funkcji agregujących z klauzulą GROUP BY.
Przykład:
Napisz zapytanie, aby pobrać liczbę pracowników w każdym mieście z pensją> 15000
SELECT COUNT(EmpID), City FROM Employees GROUP BY City HAVING SALARY > 15000;
Wyjście:
Ponieważ wszystkie są rekordami w tabeli Employee mają wynagrodzenie> 15000, jako dane wyjściowe zobaczymy następującą tabelę:
Count(EmpID) | Miasto |
2 | Delhi |
2 | Bombaj |
1 | Pune |
Użyj GROUP BY z JOINS
JOINS to instrukcje SQL używane do łączenia wierszy z dwóch lub więcej tabel na podstawie powiązanej kolumny między tymi tabelami. Możemy użyć instrukcji SQL GROUP BY, aby pogrupować zestaw wyników na podstawie kolumny/kolumn. Rozważ poniższe tabele, aby wykonać instrukcje JOIN z klauzulą SQL GROUP BY.
Tabela projektów:
Identyfikator projektu | EmpID | Identyfikator klienta | DataProjektu |
2345 | 1 | 4 | 26-01-2019 |
9876 | 2 | 5 | 28-02-2019 |
3456 | 3 | 6 | 12-03-2019 |
Tabela klientów:
Identyfikator klienta | Nazwa klienta |
4 | Sanjana |
5 | Rohan |
6 | Arun |
Przykład
Napisz zapytanie, aby wyświetlić liczbę projektów żądanych przez każdego klienta:
SELECT Clients.ClientName, COUNT(Projects.ProjectID) AS RequestedProjects FROM Projects LEFT JOIN Clients ON Projects.ProjectID = Clients.ProjectID GROUP BY ClientName;
Wyjście:
Tabela będzie zawierała następujące dane:
Nazwa klienta | Żądane projekty |
Arun | 1 |
Rohan | 1 |
Sanjana | 1 |
Na tym kończymy artykuł SQL GROUP BY. Sprawdź to Szkolenie certyfikacyjne MySQL DBA przez Edurekę, zaufaną firmę edukacyjną online z siecią zponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Ten kurs uczy podstawowych pojęć oraz zaawansowanych narzędzi i technik zarządzania danymi i administrowania bazą danych MySQL. Obejmuje on praktyczną naukę takich pojęć, jak MySQL Workbench, MySQL Server, modelowanie danych, MySQL Connector, Database Design, MySQL Command line, MySQL Functions, itp. Po zakończeniu szkolenia będziesz mógł tworzyć i administrować własną bazą danych MySQL oraz zarządzać danymi.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego artykułu „SQL GROUP BY”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.