Concetti Chiave

  • L'ordinamento alfabetico dei dipendenti avviene per cognome e nome, permettendo di gestire anche i casi di omonimia.
  • È possibile effettuare ordinamenti multi-criterio, come l'ordinamento decrescente per stipendio e crescente per cognome in caso di pari stipendio.
  • La clausola GROUP BY consente di raggruppare righe con lo stesso valore in colonne specificate, facilitando operazioni di aggregazione.
  • Utilizzando GROUP BY, è possibile ottenere informazioni aggregate come il numero di dipendenti e la somma degli stipendi per dipartimento.
  • La clausola HAVING permette di applicare condizioni aggiuntive sui gruppi creati, come filtrare i dipartimenti con un numero minimo di dipendenti.

Ordinamento alfabetico dei dipendenti

Es.: definire l’elenco alfabetico dei dipendenti, con cognome, nome e residenza:

SELECT Cognome, Nome, Residenza

FROM Impiegati

ORDER BY Cognome, Nome;
Nell'ordinamento, se esiste un ugual cognome, si ordina in funzione del nome; inoltre se l’ordinamento con più attributi, richiede un ordinamento diverso, basta specificare con il tipo Es.: Individuare elenco dipendenti in ordine decrescente di stipendio, e a parità di stipendio, in ordine crescente di cognome:

SELECT Cognome, Stipendio

FROM Impiegati

Raggruppamento con GROUP BY

4) GROUP BY permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate nella clausola.

Es.: SELECT Dipartimento, COUNT (ID) AS Dipendenti, SUM(Stipendio) AS Stipendi

FROM Impiegati

GROUP BY Dipartimento;

usando la clausola HAVING, nel fare il raggruppamento, si possono inserire ulteriori condizioni da applicare all'elemento che fa da aggregatore (SUM, AVG, COUNT, MIN,MAX).

Utilizzo della clausola HAVING

Es.: Volendo conoscere i dipartimenti dove lavorano i dipendenti, con il loro numero e la somma dei loro stipendi, dove però il numero di dipendenti è >= 2:

SELECT Dipartimenti.Descrizione,SUM(Stipendio) AS STIPENDI, COUNT(*) AS DIPENDENTI

FROM Impiegati, Dipartimenti

WHERE Impiegati.Dipartimento=Dipartimenti.Codice

GROUP BY Descrizione

HAVING COUNT(*)>=2;

Domande da interrogazione

  1. Come si può ordinare un elenco di dipendenti in base al cognome e al nome?
  2. Per ordinare un elenco di dipendenti in ordine alfabetico, si utilizza la query SQL: `SELECT Cognome, Nome, Residenza FROM Impiegati ORDER BY Cognome, Nome;`, che ordina prima per cognome e, in caso di omonimia, per nome.

  3. Qual è la funzione della clausola GROUP BY in SQL?
  4. La clausola GROUP BY permette di raggruppare righe con lo stesso valore nelle colonne specificate, come illustrato nell'esempio: `SELECT Dipartimento, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS Stipendi FROM Impiegati GROUP BY Dipartimento;`.

  5. Come si possono applicare condizioni aggiuntive ai risultati di un raggruppamento?
  6. Utilizzando la clausola HAVING, è possibile applicare condizioni ai risultati aggregati. Ad esempio, per ottenere i dipartimenti con almeno 2 dipendenti e la somma dei loro stipendi, si utilizza: `HAVING COUNT(*)>=2`.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community