Ordinare i risultati di una query

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;
Risultato della query

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:

  1. cognome in ordine crescente (utilizza l’alias);
  2. nome in ordine decrescente (utilizza l’alias);
  3. 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.

Both comments and pings are currently closed.

Comments are closed.