Instrukcja GROUP BY w SQL służy do porządkowania identycznych danych w grupy za pomocą niektórych funkcji. tj. jeśli konkretna kolumna ma te same wartości w różnych wierszach, wówczas ułoży te wiersze w grupę.
Cechy
- Klauzula GROUP BY jest używana z instrukcją SELECT.
- W zapytaniu klauzula GROUP BY jest umieszczana po GDZIE klauzula.
- W zapytaniu klauzula GROUP BY jest umieszczana przed ZAMÓWIENIE Klauzula BY, jeśli jest używana.
- W zapytaniu klauzula Group BY jest umieszczana przed klauzulą Have.
- Umieść warunek w klauzuli posiadającej.
Składnia :
WYBIERZ kolumnę 1, nazwę_funkcji (kolumna 2)
Z nazwa_tabeli
Warunek GDZIE
skaner następnyGRUPUJ WEDŁUG kolumny1, kolumny2
ZAMÓW PRZEZ kolumna1, kolumna2;
Wyjaśnienie:
- nazwa_funkcji : Nazwa używanej funkcji, na przykład SUM() , AVG().
- Nazwa tabeli : Nazwa tabeli.
- stan : Stan: używany.
Załóżmy, że mamy dwie tabele Przykładowa tabela pracowników i studentów wygląda następująco. Po dodaniu dwóch tabel wykonamy pewne operacje, aby poznać GROUP BY.
Tabela pracowników:
CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>
Wstaw losowe dane do tabeli, a następnie wykonamy pewne operacje w GROUP BY.
df lok
Zapytanie:
INSERT INTO emp (emp_no, name, sal, age) VALUES (1, 'Aarav', 50000.00, 25), (2, 'Aditi', 60000.50, 30), (3, 'Amit', 75000.75, 35), (4, 'Anjali', 45000.25, 28), (5, 'Chetan', 80000.00, 32), (6, 'Divya', 65000.00, 27), (7, 'Gaurav', 55000.50, 29), (8, 'Isha', 72000.75, 31), (9, 'Kavita', 48000.25, 26), (10, 'Mohan', 83000.00, 33);>
Wyjście:
Stół studencki:
Zapytanie:
10 milionów
CREATE TABLE student ( name VARCHAR(50), year INT, subject VARCHAR(50) ); INSERT INTO student (name, year, subject) VALUES ('Alice', 1, 'Mathematics'), ('Bob', 2, 'English'), ('Charlie', 3, 'Science'), ('David', 1, 'History'), ('Emily', 2, 'Art'), ('Frank', 3, 'Computer Science');> Wyjście:
Grupuj według pojedynczej kolumny
Grupowanie według pojedynczej kolumny oznacza umieszczenie wszystkich wierszy o tej samej wartości tylko w tej konkretnej kolumnie w jednej grupie. Rozważ zapytanie, jak pokazano poniżej:
Zapytanie:
SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>
Powyższe zapytanie wygeneruje poniższe dane wyjściowe:
Jak widać na powyższym wyjściu, wiersze ze zduplikowanymi NAZWAMI są zgrupowane pod tą samą NAZWĄ, a odpowiadająca im WYNAGRODZENIE jest sumą WYNAGRODZENIA zduplikowanych wierszy. Do obliczenia sumy używana jest tutaj funkcja SUM() języka SQL.
Grupuj według wielu kolumn
Grupowanie według wielu kolumn to na przykład: GRUPUJ WEDŁUG kolumny1, kolumny2 . Oznacza to umieszczenie wszystkich wierszy o tych samych wartościach kolumn kolumna 1 I kolumna 2 w jednej grupie. Rozważ poniższe zapytanie:
Zapytanie:
SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>
Wyjście:
Wyjście : Jak widać na powyższym wynikach, uczniowie z tym samym PRZEDMIOTEM i ROKIEM są umieszczani w tej samej grupie. A te, których jedyny TEMAT jest ten sam, ale nie ROK, należą do różnych grup. Dlatego tutaj pogrupowaliśmy tabelę według dwóch lub więcej niż jednej kolumny.
Klauzula HAVING w klauzuli GROUP BY
Wiemy, że klauzula WHERE służy do umieszczania warunków w kolumnach, ale co, jeśli chcemy umieścić warunki w grupach? W tym miejscu przydaje się klauzula HAVING. Możemy użyć klauzuli HAVING, aby postawić warunki decydujące, która grupa będzie częścią końcowego zbioru wyników. Nie możemy także używać funkcji agregujących, takich jak SUM(), COUNT() itp. z klauzulą WHERE. Musimy więc użyć klauzuli HAVING, jeśli chcemy użyć którejkolwiek z tych funkcji w warunkach.
Składnia :
WYBIERZ kolumnę 1, nazwę_funkcji (kolumna 2)
obj w JavieZ nazwa_tabeli
Warunek GDZIE
GRUPUJ WEDŁUG kolumny1, kolumny2
MAJĄCY warunek
ZAMÓW PRZEZ kolumna1, kolumna2;
vb i vb netto
Wyjaśnienie:
- nazwa_funkcji : Nazwa używanej funkcji, na przykład SUM() , AVG().
- Nazwa tabeli : Nazwa tabeli.
- stan : Stan: używany.
Przykład :
SELECT NAME, SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>3000;>
Wyjście :
Jak widać na powyższym wyjściu, w zestawie wyników pojawia się tylko jedna grupa z trzech grup, ponieważ jest to jedyna grupa, w której suma SALARY jest większa niż 3000. Dlatego użyliśmy tutaj klauzuli HAVING, aby umieścić ten warunek jako warunek należy umieścić w grupach, a nie w kolumnach.