allcasty22
Ominide
2 min. di lettura
Vota

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

  1. Ordinamenti
  2. Raggruppamenti

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;

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community