La clausola "ORDER BY"
Abbiamo usato lo statement SELECT
e le sue clausole FROM
e WHERE
per selezionare i dati memorizzati di una tabella fornendo precise condizioni. La clausola, ORDER BY
, ci permette di elencare i in un certo ordine, i risultati ottenuti.
Per default, la clausola ORDER BY
restituisce le righe selezionate in ordine crescente rispetto alle colonne specificate. Possiamo impostare questo comportamento esplicitamente specificando la parola ASC
.
Se desideriamo invece restituire i valori in ordine decrescente rispetto ad un campo, dobbiamo specificare la parola DESC
alla destra del nome di colonna.
Nota: ORDER BY
va posto sempre alla fine dello statement SELECT
.
Impiegati il cui cognome inizia con la lettera 'A' in ordne alfabetico crescente
SQL> SELECT last_name AS cognome 2 FROM employees 3 WHERE last_name LIKE 'A%' 4 ORDER BY last_name ASC;
Possiamo ordinare i risultati in base a più colonne, più precisamente, i dati saranno ordinati in base alla prima colonna nell'ordine desiderato, poi Oracle terrà conto della seconda colonna, quindi di una eventuale terza e così via.
Nota: la clausola ORDER BY
permette anche l'uso di alias di colonna, tranne quando utilizziamo la parola chiave DISTINCT
.
Per esempio, visualizziamo il cognome, il nome e il salario di tutti gli impiegati tenendo conto del seguente ordinamento:
- cognome in ordine crescente (utilizza l'alias);
- nome in ordine decrescente (utilizza l'alias);
- salario in ordine crescente
SQL> SELECT last_name AS cognome, first_name AS nome, salary 2 FROM employees 3 ORDER BY cognome ASC, nome DESC, salary ASC;
Oltre al nome delle colonne o agli alias, si può ordinare un insieme anche grazie alla posizione delle colonne nella SELECT. Questo può risultarci molto utile quando non vogliamo scrivere di nuovo i nomi delle colonne. La query precedente in questo caso risulterebbe:
SQL> SELECT last_name AS cognome, first_name AS nome, salary 2 FROM employees 3 ORDER BY 1 ASC, 2 DESC, 3 ASC;
Una considerazione finale sui valori NULL. Nell'ordine crescente (ASC), questi valori appaiono alla fine della lista, in ordine decrescente (DESC), appaiono all'inizio.