Introduzione alla clausola GROUP BY in SQL
Per i casi in cui è necessario raggruppare le righe con lo stesso valore, viene visualizzata la clausola Raggruppa per. La clausola GROUP BY è un comando in SQL che eseguirà questa operazione.
Il punto importante da ricordare qui è che la clausola GROUP BY viene utilizzata nell'istruzione SELECT nella query dopo l'utilizzo della clausola WHERE.
Sintassi
La sintassi per la clausola Group By è -
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Spiegazione della sintassi
- Istruzione SELECT - query di comando SQL
- table_name: il nome della tabella del database a cui si fa riferimento
- condizioni - fare riferimento alle condizioni da verificare
- GROUP BY - clausola per raggruppare le stesse righe insieme
- ORDINA PER - sempre utilizzata dopo la clausola Raggruppa per per disporre le righe in ordine crescente o decrescente. Questa è una condizione opzionale.
Come funziona la clausola GROUP BY in SQL?
Per comprendere il funzionamento della clausola Group By, prendiamo l'aiuto di un esempio. Considera una tabella con nome come DIPENDENTE che contiene i dettagli di base del dipendente come nome, età, numero di telefono, dob, genere, indirizzo, ID e-mail, ecc.
Tabella dei dipendenti
nome | età | Telefono | Genere | |
John | 23 | 123 | Maschio | |
Maggio | 22 | 456 | Femmina | |
Ana | 45 | 644 | Femmina | |
pentole | 57 | 3456 | Femmina | |
res | 45 | 456 | Femmina | |
abbronzatura | 78 | 2456 | Maschio | |
Corse | 34 | 5899 | Maschio | |
pallido | 55 | 7789 | Femmina | |
Tung | 32 | 5689 | Maschio | |
Chung | 21 | 4678 | Maschio |
Considerare che il DIPENDENTE ha circa 10 voci.
Per prima cosa prendiamo i diversi valori di "genere" da questa tabella. La query che ci aiuterà a recuperare il nostro obiettivo sarebbe:
SELECT gender FROM EMPLOYEE;
Questo ci darà i seguenti valori:
Genere |
Maschio |
Femmina |
Femmina |
Femmina |
Femmina |
Maschio |
Maschio |
Femmina |
Maschio |
Maschio |
Il problema qui è la ridondanza dei valori, ovvero come possiamo vedere ci sono solo due valori univoci di sessi nella tabella ma l'output non ci fornisce solo i valori univoci ma tutti i valori anche se sono ripetitivi.
Quindi, al fine di ottenere solo i valori univoci dalla tabella, utilizzeremo la seguente query:
SELECT gender FROM EMPLOYEE GROUP BY gender;
Il risultato che riceviamo dopo aver eseguito questa query sarà:
Genere |
Maschio |
Femmina |
Raggruppa per raggrupperà tutti gli stessi valori nelle righe e restituirà solo una singola voce o una singola riga come per le righe "Maschio" e "Femmina" nella tabella. Ciò ha comportato solo due valori univoci presenti nella colonna "genere" i, e. Maschio e femmina.
Ora, prendiamo un altro esempio di una tabella che contiene i dettagli del dipartimento a cui è associato ciascuno di questi dipendenti. Chiameremo questo un tavolo Employee_Department.
Tabella del dipartimento dei dipendenti
nome | sparviero | Dipartimento |
John | hod1 | Servizio |
Maggio | hod2 | Finanza |
Ana | hod1 | Servizio |
pentole | hod2 | Finanza |
res | hod3 | Tech |
abbronzatura | hod5 | Supporto |
Corse | hod3 | Servizio |
pallido | hod3 | Tech |
Tung | hod3 | Finanza |
Chung | hod5 | HR |
Quindi ora eseguiamo la query seguente e cerchiamo il risultato:
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
L'esecuzione di questa query recupera il seguente risultato:
sparviero | Dipartimento |
hod1 | Servizio |
hod2 | Finanza |
hod3 | Tech |
hod5 | Supporto |
hod3 | Servizio |
hod3 | Finanza |
hod5 | HR |
La clausola GROUP BY funziona sia sull'hod sia sul dipartimento per cercare le righe univoche nello scenario sopra menzionato. Controllerà la combinazione di hod e dipartimento rispetto ad altre voci di hod e dipartimento per identificarne l'unicità. Se l'hod è lo stesso ma il reparto è diverso, quella riga viene trattata come unica. Se l'hod e il reparto sono uguali per più di una riga, la voce duplicata non viene creata e viene mostrata solo una riga.
Operazioni della clausola GROUP BY
Possiamo usare la clausola Raggruppa per con diverse funzioni di raggruppamento e aggregazione. Facciamo alcuni esempi usando le due tabelle sopra menzionate, ad esempio EMPLOYEE e Employee_Department.
Esempio 1
Ottenere il numero di impiegati maschi e femmine nell'azienda.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
L'esecuzione di questa query recupera il seguente risultato:
COUNT ( 'name') | Genere |
5 | Maschio |
5 | Femmina |
Esempio n. 2
Ottenere il conteggio dei dipartimenti dell'azienda in ordine decrescente del conteggio.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
L'esecuzione di questa query recupera il seguente risultato:
COUNT ( 'name') | Dipartimento |
3 | Servizio |
3 | Finanza |
2 | Tech |
1 | Supporto |
1 | HR |
Esempio n. 3
Ottenere il conteggio di reparti diversi sotto lo stesso nodo dell'azienda in ordine decrescente del conteggio.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
L'esecuzione di questa query recupera il seguente risultato:
COUNT ( 'name') | sparviero | Dipartimento |
2 | hod1 | Servizio |
2 | hod2 | Finanza |
2 | hod3 | Tech |
1 | hod5 | Supporto |
1 | hod3 | Servizio |
1 | hod3 | Finanza |
1 | hod5 | HR |
La clausola HAVING in SQL
L'uso della clausola HAVING con la clausola Group By limiterà il risultato della query alle righe con il valore indicato con la clausola Avendo.
Comprenderlo con un esempio renderà più semplice -
Esempio n. 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
L'esecuzione di questa query recupera il seguente risultato:
nome | età | Telefono | Genere | |
Maggio | 22 | 456 | Femmina | |
Ana | 45 | 644 | Femmina | |
pentole | 57 | 3456 | Femmina | |
res | 45 | 456 | Femmina | |
pallido | 55 | 7789 | Femmina |
Esempio n. 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
L'esecuzione di questa query recupera il seguente risultato:
nome | sparviero | Dipartimento |
Maggio | hod2 | Finanza |
pentole | hod2 | Finanza |
Tung | hod3 | Finanza |
Conclusione
Usando la clausola GROUP BY con l'istruzione SELECT possiamo raggruppare le righe con gli stessi valori insieme all'uso di funzioni aggregate, costanti ed espressioni.
Articoli consigliati
Questa è una guida alla clausola GROUP BY in SQL. Qui discutiamo di come la clausola GROUP BY funzioni in SQL con l'aiuto di esempi e tabelle dei dipendenti. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -
- Query di inserimento SQL
- Visualizzazioni SQL
- Database in SQL
- Transazioni in SQL