CodeGym /Corsi /SQL SELF /Ordinamento dei dati (ORDER BY): ordinamento crescente e ...

Ordinamento dei dati (ORDER BY): ordinamento crescente e decrescente (ASC, DESC)

SQL SELF
Livello 2 , Lezione 3
Disponibile

Quando lavori con i database, spesso vuoi vedere un certo ordine nei dati. Per esempio:

  • "Fammi vedere la top-10 dei prodotti più costosi."
  • "Quali ordini sono stati gli ultimi?"
  • "Qual è l’età degli studenti, partendo dai più giovani?"

Voglia di ordinare i dati è super naturale: anche se sei un programmatore super figo, scavare in un mucchio di righe a caso non è proprio divertente. Ecco perché SQL ci offre uno strumento per ordinare le righe nel risultato — l’operatore ORDER BY.

Basi dell’ordinamento con ORDER BY

ORDER BY è tipo una bacchetta magica che ti permette di mettere in ordine le righe nel set di risultati. Senza di lui, i dati vengono restituiti in un ordine "casuale" (non è un bug del database, semplicemente l’ordine non è garantito).

Ecco come si presenta la sintassi di ORDER BY:

SELECT colonna1, colonna2
FROM tabella
ORDER BY colonna1 DESC;
  • colonna1: il nome della colonna su cui vuoi ordinare.
  • ASC: ordinamento crescente (questo è il valore di default, quindi puoi anche non scriverlo).
  • DESC: ordinamento decrescente.

Esempio

Supponiamo di avere una tabella students:

id name age
1 Alex 22
2 Maria 19
3 Otto 21

Ordinare gli studenti per età (in ordine crescente):

SELECT name, age
FROM students
ORDER BY age ASC;

Risultato:

name age
Maria 19
Otto 21
Alex 22

Se cambi la direzione dell’ordinamento in decrescente:

SELECT name, age
FROM students
ORDER BY age DESC;

Il risultato sarà così:

name age
Alex 22
Otto 21
Maria 19

Ordinamento per più colonne

A volte una sola colonna non basta per ordinare. Immagina che nel database ci siano più studenti con la stessa età e vuoi aggiungere un ordinamento extra, tipo per nome.

Ordinamento per più colonne:

SELECT colonna1, colonna2
FROM tabella
ORDER BY colonna1 DESC, colonna2 ASC;

Esempio per la seguente tabella:

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Query:

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Risultato:

name age
Anna 19
Maria 19
Otto 21
Alex 22

Qui prima si ordina per età (crescente), e dentro ogni età — per nome in ordine alfabetico.

Ordinamento con alias

Se usi alias per le colonne, puoi anche ordinare per questi alias.

SELECT name AS "Nome", age AS "Età"
FROM students
ORDER BY "Età" DESC;

Risultato:

Nome Età
Alex 22
Otto 21
Maria 19

Perché è importante? Perché prima non si poteva fare e c’erano problemi con l’ordinamento per colonne calcolate.

Ordinamento con colonne calcolate

SQL ti permette di fare calcoli direttamente nella query, e poi ordinare per il risultato di questi calcoli.

Esempio 1. Calcolo semplice

SELECT name, age, age * 2 AS doubled_age
FROM students
ORDER BY doubled_age DESC;

Risultato:

name age doubled_age
Alex 22 44
Otto 21 42
Maria 19 38

Esempio 2. Uso delle funzioni. Supponiamo di avere i prezzi dei prodotti nella tabella products:

product_name price
Prodotto A 100
Prodotto B 200
Prodotto C 150

E ora ordiniamo per il prezzo arrotondato, moltiplicato per 0.9 (tipo con lo sconto). La funzione ROUND restituisce il numero arrotondato al decimale che vuoi.

SELECT product_name, price, ROUND(price * 0.9, 1) AS discounted_price
FROM products
ORDER BY discounted_price ASC;

Ecco il risultato:

product_name price discounted_price
Prodotto A 100 90
Prodotto C 150 135
Prodotto B 200 180

Applicazione pratica dell’ordinamento

L’ordinamento è fondamentale in questi scenari:

  • Creazione di report, tipo la top-10 delle migliori vendite del mese.
  • Visualizzazione dati per interfacce utente, tipo la lista degli ordini ordinata per data.
  • Generazione di liste per l’analisi, tipo raggruppare per priorità.

Errori tipici con ORDER BY

Gli errori possono spuntare ovunque. Ecco alcune cose a cui stare attenti:

  • Se provi a ordinare per una colonna che non esiste, ti becchi un errore: column "not_a_column" does not exist.
  • Ordinare per un alias usato in una colonna calcolata può essere confusionario se l’alias è definito a un livello superiore.
  • Se ti dimentichi di specificare la direzione di ordinamento, PostgreSQL userà ASC di default. Non è un errore, ma può dare risultati inaspettati.

Ora sai come gestire l’ordinamento in PostgreSQL con ORDER BY. Ricorda: dati ben organizzati sono metà del successo quando scrivi query SQL efficaci. Avanti con il prossimo argomento! 😉

1
Sondaggio/quiz
Introduzione a SQL, livello 2, lezione 3
Non disponibile
Introduzione a SQL
Introduzione a SQL
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION