Klauzula SQL GROUP BY służy do porządkowania identycznych danych w grupy na podstawie jednej lub większej liczby kolumn. Jest powszechnie używany z funkcjami agregującymi, takimi jak COUNT() SUM() AVG() MAX() i MIN() do wykonywania obliczeń na każdej grupie danych.
Przykład: Najpierw to zrobimy tworzyć demonstracyjna baza danych SQL i tabela, na której skorzystamy z polecenia GROUP BY.
cdr pełna forma
Zapytanie:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Wyjście:
Składnia:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- funkcja_agregująca: funkcja używana do agregacji np. SUMA() ŚREDNIA() LICZBA().
- nazwa_tabeli: nazwa tabeli, z której wybierane są dane.
- stan : schorzenie: Opcjonalny warunek filtrowania wierszy przed grupowaniem (używany z WHERE).
- kolumna1 kolumna2: Kolumny, w których zastosowano grupowanie.
Przykłady GROUP BY
Załóżmy, że mamy tabelę Student. Wstawimy do tej tabeli przykładowe dane, a następnie wykonamy operacje za pomocą GROUP BY, aby zrozumieć, w jaki sposób grupuje wiersze na podstawie kolumny i agreguje dane.
Przykład 1: Grupuj według pojedynczej kolumny
Kiedy grupujemy według pojedynczej kolumny, wiersze o tej samej wartości w tej kolumnie są łączone. Na przykład grupowanie według przedmiotów pokazuje, ilu uczniów studiuje na każdym przedmiocie.
Zapytanie:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Wyjście:
Wyjaśnienie: Każdy przedmiot pojawia się w tabeli dwukrotnie, więc liczba przedmiotów z matematyki i przedmiotów ścisłych w języku angielskim wynosi 2.
Przykład 2: Grupowanie według wielu kolumn
Użycie GROUP BY z wieloma kolumnami grupuje wiersze, które mają w tych kolumnach te same wartości. Na przykład grupowanie według przedmiotu i roku spowoduje połączenie wierszy z tą samą parą przedmiot-rok i będziemy mogli policzyć, ilu uczniów należy do każdej grupy.
Zapytanie:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Wyjście:
np.połączyć
Wyjaśnienie: Studenci z tego samego przedmiotu i roku są grupowani razem. Ponieważ każda para przedmiot-rok występuje dwukrotnie, liczba wynosi 2 dla każdej grupy.
Klauzula HAVING w klauzuli GROUP BY
Klauzula HAVING służy do filtrowania wyników po grupowaniu, zwłaszcza podczas pracy z funkcjami agregującymi, takimi jak SUM() COUNT() lub AVG(). W przeciwieństwie do WHERE stosuje warunki na zgrupowanych danych.
Przykład 1: Filtruj według całkowitego wynagrodzenia
W tym zapytaniu grupujemy pracowników według nazwy i wyświetlamy tylko tych, których łączne wynagrodzenie jest większe niż 50000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Wyjście
Wyjaśnienie : W wyniku pojawiają się tylko pracownicy, których łączne wynagrodzenie przekracza 50000.
Przykład 2: Filtruj według średniego wynagrodzenia
W tym zapytaniu grupujemy pracowników według wieku i wyświetlamy tylko te grupy wiekowe, w których średnia pensja przekracza 60000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Wyjście:
Wyjaśnienie: Zapytanie to grupuje pracowników według wieku i oblicza średnie wynagrodzenie dla każdego wieku. Wyświetlane są tylko te grupy wiekowe, w których średnia pensja jest większa niż 60 000.
Utwórz quiz