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

  1. Istruzione SELECT - query di comando SQL
  2. table_name: il nome della tabella del database a cui si fa riferimento
  3. condizioni - fare riferimento alle condizioni da verificare
  4. GROUP BY - clausola per raggruppare le stesse righe insieme
  5. 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

nomeetàTelefonoGeneree-mail
John23123Maschio
Maggio22456Femmina
Ana45644Femmina
pentole573456Femmina
res45456Femmina
abbronzatura782456Maschio
Corse345899Maschio
pallido557789Femmina
Tung325689Maschio
Chung214678Maschio

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

nomesparvieroDipartimento
Johnhod1Servizio
Maggiohod2Finanza
Anahod1Servizio
pentolehod2Finanza
reshod3Tech
abbronzaturahod5Supporto
Corsehod3Servizio
pallidohod3Tech
Tunghod3Finanza
Chunghod5HR

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:

sparvieroDipartimento
hod1Servizio
hod2Finanza
hod3Tech
hod5Supporto
hod3Servizio
hod3Finanza
hod5HR

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
5Maschio
5Femmina

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
3Servizio
3Finanza
2Tech
1Supporto
1HR

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')sparvieroDipartimento
2hod1Servizio
2hod2Finanza
2hod3Tech
1hod5Supporto
1hod3Servizio
1hod3Finanza
1hod5HR

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:

nomeetàTelefonoGeneree-mail
Maggio22456Femmina
Ana45644Femmina
pentole573456Femmina
res45456Femmina
pallido557789Femmina

Esempio n. 5

SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;

L'esecuzione di questa query recupera il seguente risultato:

nomesparvieroDipartimento
Maggiohod2Finanza
pentolehod2Finanza
Tunghod3Finanza

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ù -

  1. Query di inserimento SQL
  2. Visualizzazioni SQL
  3. Database in SQL
  4. Transazioni in SQL