Dreke90
Genius
2 min. di lettura
Vota 4 / 5

Concetti Chiave

  • La clausola GROUP BY in SQL consente di raggruppare righe di una tabella basandosi su uno o più attributi per applicare funzioni di aggregazione.
  • La clausola HAVING può essere utilizzata dopo GROUP BY per filtrare i gruppi di righe, permettendo interrogazioni più specifiche.
  • Un esempio pratico include il calcolo del numero totale di ore di insegnamento per ogni professore utilizzando SUM e visualizzando i risultati.
  • Il processo di esecuzione include un equi-join tra le tabelle e il raggruppamento delle righe per professore, seguito dall'applicazione della funzione di aggregazione.
  • È consigliabile specificare nel comando SELECT tutti gli attributi utilizzati nel GROUP BY per evitare errori di raggruppamento.
Raggruppamenti in SQL

La clausola GROUP BY del comando SELECT permette di potenziare ulteriormente le interrogazioni sulle tabelle. Essa infatti consente di raggruppare le righe di una tabella in base ai valori di uno o più attributi,potendo cosi applicare le funzioni di aggregazione viste precedentemente ai singoli gruppi di righe.
Inoltre,attraverso la clausola HAVING,che vine in sequenza solo dopo una GROUP BY,è possibile applicare condizioni di ricerca sui gruppi di righe in modo da rispondere a interrogazioni ancora più specifiche.

Esempio pratico

Calcolare per ogni professore il numero totale di ore di insegnamento,visualizzando poi l'elenco dei nominativi dei professori con i corrispondenti valori calcolati.
SELECT Professori.CodiceProfessore, Cognome,Nome ,SUM (NumeroOre) AS NumeroTotaleOreInsegnamento
FROM Professori, Insegnano
WHERE Professori.CodiceProfessore = Insegnano.CodiceProfessore
GROUP BY Professori.CodiceProfessore, Cognome,Nome.

Simuliamo passo a passo l'esecuzione del programma
1)E' eseguito l'equin-join tra le tabelle Professori e Insegnano.

2)Le righe della tabella risultante vengono raggruppate in base ai valori degli attributi CodiceProfessore,Cognome e Nome,in modo da ottenere per ogni singolo professore le relative righe corrispondenti ai suoi dati;

3)Su ciascun gruppo di righe,e quindi per ogni singolo professore,è applicata la funzione di aggregazione SUM,in modo da ottenere per ogni professore il numero di ore di insegnamento,visualizzando l'elenco dei professori e i corrispondenti valori calcolati nella colonna individuata da NumeroTotaleOreInsegnamento.
Osserviamo che in questo caso è buona regola specificare dopo il comando SELECT tutti gli attributi che compaiono dopo la clausola GROUP BY,in modo da evitare di incorrere in errori sul raggruppamento. L'esempio può anche esser cosi sviluppato.

SELECT Cognome,Nome ,SUM (NumeroOre) AS NumeroTotaleOreInsegnamento
FROM Professori, Insegnano
WHERE Professori.CodiceProfessore = Insegnano.CodiceProfessore
GROUP BY Professori.CodiceProfessore, Cognome,Nome.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community