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
- Come si può ordinare un elenco di dipendenti in base al cognome e al nome?
- Qual è la funzione della clausola GROUP BY in SQL?
- Come si possono applicare condizioni aggiuntive ai risultati di un raggruppamento?
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.
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;`.
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`.