logo

SQL | GRUPUJ WEDŁUG

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ępny

GRUPUJ WEDŁUG kolumny1, kolumny2

ZAMÓW PRZEZ kolumna1, kolumna2;

Wyjaśnienie:

  1. nazwa_funkcji : Nazwa używanej funkcji, na przykład SUM() , AVG().
  2. Nazwa tabeli : Nazwa tabeli.
  3. 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 Javie

Z nazwa_tabeli

Warunek GDZIE

GRUPUJ WEDŁUG kolumny1, kolumny2

MAJĄCY warunek

ZAMÓW PRZEZ kolumna1, kolumna2;

vb i vb netto

Wyjaśnienie:

  1. nazwa_funkcji : Nazwa używanej funkcji, na przykład SUM() , AVG().
  2. Nazwa tabeli : Nazwa tabeli.
  3. 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.