T-SQL - Clausola GROUP BY

Il server SQL GROUP BY viene utilizzata in collaborazione con l'istruzione SELECT per organizzare dati identici in gruppi.

La clausola GROUP BY segue la clausola WHERE in un'istruzione SELECT e precede la clausola ORDER BY.

Sintassi

Di seguito è riportata la sintassi di base della clausola GROUP BY. La clausola GROUP BY deve seguire le condizioni nella clausola WHERE e deve precedere la clausola ORDER BY, se utilizzata.

SELECT column1, column2 
FROM table_name 
WHERE [ conditions ] 
GROUP BY column1, column2 
ORDER BY column1, column2

Esempio

Considera che la tabella CLIENTI contiene i seguenti record:

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00

Se vuoi conoscere l'importo totale dello stipendio per ogni cliente, la seguente sarà la query GROUP BY.

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME;

Il comando precedente produrrà il seguente output.

NAME        sum of salary 
Chaitali    6500.00 
Hardik      8500.00 
kaushik     2000.00 
Khilan      1500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      2000.00

Consideriamo ora la seguente tabella CLIENTI con i seguenti record con nomi duplicati.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00

Se vogliamo conoscere l'importo totale dello stipendio su ciascun cliente, la seguente sarà una query GROUP BY.

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME

Il comando precedente produrrà il seguente output.

NAME        sum of salary 
Hardik      8500.00 
kaushik     8500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      3500.00