Concetti Chiave
- ORDER BY is used to sort query results by values in one or more columns, with default ascending order unless DESC is specified.
- NULL values appear at the start of ascending order and at the end of descending order when using ORDER BY.
- ORDER BY should be the last element in a SELECT command to sort results as needed.
- GROUP BY is used to group rows with the same values in specified columns, allowing for aggregation like COUNT or SUM.
- HAVING can be used with GROUP BY to apply conditions to aggregated data, such as filtering departments with more than a specific number of employees.
Indice
Ordinamenti
ORDER BY, serve per ottenere i risultati di un’interrogazione ordinati in funzione di valori contenuti in una o più colonne individuate dal SELECT. Di default l’ordinamento è crescente (ASC), volendo un risultato diverso bisogna usare la parola chiave DESC. I valori Null sono posizionati ad inizio di ordinamenti crescenti, e viceversa per ordinamenti decrescenti. L’Order By va posizionato come ultimo elemento di un comando SELECT.
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 ASC/DESC.
Es.: Individuare elenco dipendenti in ordine decrescente di stipendio, e a parità di stipendio, in ordine crescente di cognome:
SELECT Cognome, Stipendio
FROM Impiegati
ORDER BY Stipendio DESC, Cognome [ASC];
4)
Raggruppamenti
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).
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;