Concetti Chiave

  • La clausola GROUP BY consente di raggruppare le righe di una tabella in base ai valori di uno o più attributi, facilitando l'uso di funzioni di aggregazione.
  • La clausola HAVING permette di applicare condizioni sui gruppi di righe creati con GROUP BY, rendendo le interrogazioni più specifiche.
  • Un esempio di utilizzo di GROUP BY è il calcolo del numero totale di ore di insegnamento per ogni professore, mostrando i risultati in forma aggregata.
  • Durante l'esecuzione del programma, si esegue un equi-join tra le tabelle Professori e Insegnano per ottenere i dati aggregati desiderati.
  • È importante specificare tutti gli attributi nel comando SELECT che compaiono dopo GROUP BY per evitare errori nel raggruppamento.

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.

Utilizzo della clausola HAVING

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

Simulazione dell'esecuzione del programma

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.

Importanza della specifica degli attributi

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 da interrogazione

  1. Qual è la funzione della clausola GROUP BY nelle interrogazioni SQL?
  2. La clausola GROUP BY permette di raggruppare le righe di una tabella in base ai valori di uno o più attributi, consentendo l'applicazione di funzioni di aggregazione ai singoli gruppi di righe.

  3. Come si utilizza la clausola HAVING in un'interrogazione SQL?
  4. La clausola HAVING viene utilizzata dopo GROUP BY per applicare condizioni di ricerca sui gruppi di righe, permettendo di ottenere risultati più specifici.

  5. Perché è importante specificare gli attributi dopo il comando SELECT in presenza di GROUP BY?
  6. È buona regola specificare tutti gli attributi che compaiono dopo GROUP BY per evitare errori sul raggruppamento, garantendo così la correttezza dei risultati ottenuti.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community