logo

SQL | RAGGRUPPA PER

L'istruzione GROUP BY in SQL viene utilizzato per organizzare dati identici in gruppi con l'aiuto di alcune funzioni. cioè se una particolare colonna ha gli stessi valori in righe diverse, organizzerà queste righe in un gruppo.

Caratteristiche

  • La clausola GROUP BY viene utilizzata con l'istruzione SELECT.
  • Nella query, la clausola GROUP BY viene inserita dopo DOVE clausola.
  • Nella query, la clausola GROUP BY viene inserita prima di ORDINE Clausola BY se utilizzata.
  • Nella query, la clausola Group BY viene inserita prima della clausola Have.
  • Posizionare la condizione nella clausola dell'avere.

Sintassi :

SELEZIONA colonna1, nome_funzione(colonna2)



DA nome_tabella

DOVE condizione

GRUPPO PER colonna1, colonna2

ORDINA PER colonna1, colonna2;

Spiegazione:

  1. nome_funzione : Nome della funzione utilizzata, ad esempio SUM() , AVG().
  2. nome_tabella : Nome della tabella.
  3. condizione : Condizione usata.

Supponiamo di avere due tabelle Employee e Student Sample Table è la seguente: dopo aver aggiunto due tabelle, eseguiremo alcune operazioni specifiche per conoscere GROUP BY.

Tabella dipendenti:

CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>

Inseriamo alcuni dati casuali in una tabella e poi eseguiremo alcune operazioni in GROUP BY.

Domanda:

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);>

Produzione:

Tavolo Studenti:

Domanda:

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');>

Produzione:

Raggruppa per singola colonna

Raggruppare per singola colonna significa posizionare tutte le righe con lo stesso valore solo di quella particolare colonna in un gruppo. Considera la query come mostrato di seguito:

Domanda:

SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>

La query precedente produrrà l'output seguente:

Come puoi vedere nell'output sopra, le righe con NOMI duplicati sono raggruppate sotto lo stesso NOME e il loro SALARY corrispondente è la somma dello SALARY delle righe duplicate. La funzione SUM() di SQL viene utilizzata qui per calcolare la somma.

Raggruppa per più colonne

Raggruppare per più colonne significa, ad esempio, GRUPPO PER colonna1, colonna2 . Ciò significa posizionare tutte le righe con gli stessi valori di colonne colonna 1 E colonna 2 in un gruppo. Considera la query seguente:

Domanda:

SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>

Produzione:

Produzione : Come puoi vedere nell'output sopra, gli studenti con la stessa MATEMATICA e lo stesso ANNO vengono inseriti nello stesso gruppo. E quelli il cui unico SOGGETTO è lo stesso ma non ANNO appartengono a gruppi diversi. Quindi qui abbiamo raggruppato la tabella in base a due colonne o più di una colonna.

Clausola HAVING nella clausola GRUPPO BY

Sappiamo che la clausola WHERE viene utilizzata per inserire condizioni sulle colonne, ma cosa succede se vogliamo inserire condizioni sui gruppi? È qui che entra in uso la clausola HAVING. Possiamo utilizzare la clausola HAVING per porre condizioni per decidere quale gruppo farà parte del set di risultati finale. Inoltre, non possiamo utilizzare funzioni aggregate come SUM(), COUNT(), ecc. con la clausola WHERE. Quindi dobbiamo usare la clausola HAVING se vogliamo usare una qualsiasi di queste funzioni nelle condizioni.

Sintassi :

SELEZIONA colonna1, nome_funzione(colonna2)

DA nome_tabella

DOVE condizione

GRUPPO PER colonna1, colonna2

AVERE condizione

ORDINA PER colonna1, colonna2;

Spiegazione:

  1. nome_funzione : Nome della funzione utilizzata, ad esempio SUM() , AVG().
  2. nome_tabella : Nome della tabella.
  3. condizione : Condizione usata.

Esempio :

SELECT NAME, SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>3000;>

Produzione :

È nata Freddie Mercury

Come puoi vedere nell'output sopra, solo un gruppo dei tre appare nel set di risultati poiché è l'unico gruppo in cui la somma di SALARIO è maggiore di 3000. Quindi abbiamo utilizzato la clausola HAVING qui per posizionare questa condizione come La condizione deve essere posizionata sui gruppi e non sulle colonne.