Con SQL ORDER BY è possibile or­ga­niz­za­re i risultati di ricerca delle tue query di dati in ordine crescente o de­cre­scen­te in base alle tue esigenze. Ordinando i dati in righe e colonne nella tua tabella di de­sti­na­zio­ne puoi au­men­tar­ne la chiarezza e la leg­gi­bi­li­tà. In questo modo è possibile ot­ti­miz­za­re e ve­lo­ciz­za­re le analisi dei dati e le query su record di dati complessi.

Che cos’è il comando SQL ORDER BY?

Se desideri or­ga­niz­za­re dati e risultati di record di dati semplici o complessi nella tabella di de­sti­na­zio­ne, utilizza il comando ORDER BY di SQL. Questo comando ti permette di definire un ordine crescente o de­cre­scen­te nella query di dati per i tuoi dati di de­sti­na­zio­ne. Con ORDER BY ottieni quindi maggiore chiarezza e leg­gi­bi­li­tà ordinando i risultati della query. Come im­po­sta­zio­ne pre­de­fi­ni­ta, il comando mette i dati della query in ordine crescente, ossia dalla A alla Z o dal valore più piccolo a quello più grande. Se pre­fe­ri­sci un ordine diverso, indica la relativa parola chiave opzionale ASC (Ascend) per crescente o DESC (Descend) per de­cre­scen­te.

È possibile definire soltanto una colonna o anche più colonne per i risultati. Grazie alla chiarezza di pre­sen­ta­zio­ne, ORDER BY svolge un ruolo im­por­tan­te per ottenere query di dati veloci e ordinate. Questo comando è uti­liz­za­to spesso in com­bi­na­zio­ne con SQL SELECT, SQL WHERE e, a seconda dei casi, con altri operatori SQL o funzioni come SQL GROUP BY.

Consiglio

Vorresti saperne di più su SQL, ma le tue co­no­scen­ze non bastano? La nostra in­tro­du­zio­ne a SQL mediante esempi ti aiuterà a entrare nel mondo di questo popolare lin­guag­gio per database.

La sintassi di SQL ORDER BY

La sintassi di ORDER BY si presenta così:

SELECT  colonnaA, colonnaB, …  oppure *
FROM  Tabella
ORDER BY  colonnaA, colonnaB, …  (opzionale: ASC oppure DESC)
sql
N.B.

Se indichi una sola colonna dopo ORDER BY, come risultato ottieni una colonna con i risultati messi in ordine. Se indichi più colonne, la clausola ordina prima tutti i risultati in base alla colonna A. In presenza di voci identiche in righe diverse, la clausola ordina le voci in base alla colonna B.

È possibile espandere la sintassi di SQL ORDER BY con gli operatori o i parametri de­si­de­ra­ti. Con una clausola WHERE puoi definire ad esempio ulteriori con­di­zio­ni per spe­ci­fi­ca­re meglio i risultati della query. La sintassi in com­bi­na­zio­ne con WHERE si presenta così:

SELECT  colonnaA, colonnaB, …  oppure *
FROM  Tabella
WHERE  colonnaA  =  'Condizione di ricerca'
ORDER BY  colonnaA, colonnaB, …  (opzionale: ASC oppure DESC)
sql

È possibile uti­liz­za­re i seguenti parametri:

  • SELECT: con SQL SELECT puoi definire i dati da ana­liz­za­re. Se inserisci un asterisco *, la query vale per l’intero record di dati; se invece inserisci i nomi delle colonne, la ricerca riguarda le colonne se­le­zio­na­te.
  • FROM: definisce la tabella in cui eseguire la query dei dati.
  • WHERE: la clausola opzionale SQL WHERE definisce una con­di­zio­ne di ricerca specifica in base alla quale vengono ordinati i risultati. Qui è possibile uti­liz­za­re ulteriori operatori di confronto come = oppure operatori come SQL LIKE o SQL NOT.
  • ORDER BY: definisce il valore in base al quale ordinare i risultati. Se non indichi né ASCDESC, il comando mette au­to­ma­ti­ca­men­te i risultati in ordine al­fa­be­ti­co o numerico de­cre­scen­te.
N.B.

La clausola ORDER BY ordina i valori NULL au­to­ma­ti­ca­men­te o in base all’ordine scelto, a seconda del database. In SQLite, MySQL e SQL Server, il comando gestisce i valori NULL come valori più bassi: in ordine crescente si trovano quindi all’inizio. In Oracle e Post­gre­SQL, i valori NULL sono con­si­de­ra­ti come valori più alti: in ordine crescente sono quindi alla fine.

Pos­si­bi­li­tà di ap­pli­ca­zio­ne di ORDER BY

Alcune ap­pli­ca­zio­ni pratiche di SQL ORDER BY sono:

  • Or­di­na­men­to di in­for­ma­zio­ni sui prodotti in base al nome del prodotto, alla categoria o al prezzo
  • Or­di­na­men­to di tran­sa­zio­ni per importo, data o no­mi­na­ti­vo
  • Or­ga­niz­za­zio­ne di ordini per quantità o va­lu­ta­zio­ni
  • Or­di­na­men­to di di­pen­den­ti per stipendio, incarichi pre­sta­zio­ni o reparto
  • Elenco delle scorte a magazzino per quantità o nome
  • Or­di­na­men­to di consegne per codice postale o numero di tracking
  • Or­di­na­men­to di elenchi dei clienti per regione o età

Esempi pratici per SQL ORDER BY

Nelle parti seguenti ti mostriamo tre pratici esempi di ap­pli­ca­zio­ne per com­pren­de­re meglio il fun­zio­na­men­to di ORDER BY.

Or­di­na­men­to di prodotti in base al prezzo

Se desideri disporre i prodotti della categoria “Bellezza” di una tabella “Prodotti” in base al prezzo in ordine crescente, utilizza FROM per indicare la categoria da usare per l’or­di­na­men­to. Con ORDER BY e ASC puoi stabilire che l’or­di­na­men­to segua il “Prezzo” in ordine crescente. Procedi come segue:

SELECT  *
FROM  Prodotti
WHERE  categoria  = 'Bellezza'
ORDER BY  Prezzo  ASC;
sql

Fil­trag­gio di gruppi di clienti

Sup­po­nia­mo che in una tabella “Clienti” desideri mettere i nomi di tutti i clienti in Italia in ordine al­fa­be­ti­co ap­pli­can­do la con­di­zio­ne di or­di­na­men­to “Paese”. Per metterli in ordine crescente dalla A alla Z, non è ne­ces­sa­rio ag­giun­ge­re la clausola ASC. Se invece desideri metterli in ordine dalla Z alla A, aggiungi DESC al comando SQL ORDER BY:

SELECT  *
FROM  Clienti
WHERE  Paese = 'Italia'
ORDER BY  Nome  DESC;
sql

Or­di­na­men­to con più con­di­zio­ni

Nell’esempio seguente, in una tabella “Prodotti” desideri mettere le voci della categoria “Elet­tro­ni­ca” in ordine al­fa­be­ti­co crescente. Se la quantità ordinata è identica, allora or­ga­niz­ze­rai gli ordini per regione. La sintassi si presenta così:

SELECT  *
FROM  Prodotti
WHERE  Categoria  =  'Elettronica'
ORDER BY  Quantità ASC, Regione  DESC;
sql

Al­ter­na­ti­ve a SQL ORDER BY

Un’al­ter­na­ti­va che svolga la stessa funzione di ORDER BY non esiste. Tuttavia, tra i comandi SQL che sono uti­liz­za­ti spesso in com­bi­na­zio­ne con SQL ORDER BY troviamo anche SQL GROUP BY. Mentre GROUP BY permette ad esempio di rag­grup­pa­re per categoria i record di dati presenti in colonne, ORDER BY ti consente anche di ordinarli.

Esempio: vorresti rag­grup­pa­re i valori degli ordini dei clienti per Paese e, suc­ces­si­va­men­te, metterli in ordine crescente in base alla quantità media ordinata con la funzioni di ag­gre­ga­zio­ne SQL AVG. La sintassi si presenta così:

SELECT  Paese, AVG(Quantità)
FROM  Clienti
WHERE  Categoria = 'Elettronica'
GROUP BY  Paese
ORDER BY  AVG(Quantità) ASC;
sql

Con la clausola SQL HAVING puoi filtrare ul­te­rior­men­te i record di dati ordinati in base a con­di­zio­ni e criteri di ricerca definiti. Inoltre, con LIMIT è possibile limitare l’insieme risultato a una quantità de­si­de­ra­ta.

Vai al menu prin­ci­pa­le