SQL ORDER BY: come ordinare correttamente i risultati delle tue query
Con SQL ORDER BY
è possibile organizzare i risultati di ricerca delle tue query di dati in ordine crescente o decrescente in base alle tue esigenze. Ordinando i dati in righe e colonne nella tua tabella di destinazione puoi aumentarne la chiarezza e la leggibilità. In questo modo è possibile ottimizzare e velocizzare le analisi dei dati e le query su record di dati complessi.
Che cos’è il comando SQL ORDER BY
?
Se desideri organizzare dati e risultati di record di dati semplici o complessi nella tabella di destinazione, utilizza il comando ORDER BY
di SQL. Questo comando ti permette di definire un ordine crescente o decrescente nella query di dati per i tuoi dati di destinazione. Con ORDER BY
ottieni quindi maggiore chiarezza e leggibilità ordinando i risultati della query. Come impostazione predefinita, 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 preferisci un ordine diverso, indica la relativa parola chiave opzionale ASC
(Ascend) per crescente o DESC
(Descend) per decrescente.
È possibile definire soltanto una colonna o anche più colonne per i risultati. Grazie alla chiarezza di presentazione, ORDER BY
svolge un ruolo importante per ottenere query di dati veloci e ordinate. Questo comando è utilizzato spesso in combinazione con SQL SELECT, SQL WHERE e, a seconda dei casi, con altri operatori SQL o funzioni come SQL GROUP BY.
Vorresti saperne di più su SQL, ma le tue conoscenze non bastano? La nostra introduzione a SQL mediante esempi ti aiuterà a entrare nel mondo di questo popolare linguaggio 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)
sqlSe 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 desiderati. Con una clausola WHERE
puoi definire ad esempio ulteriori condizioni per specificare meglio i risultati della query. La sintassi in combinazione 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 utilizzare i seguenti parametri:
SELECT
: con SQL SELECT puoi definire i dati da analizzare. 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 selezionate.FROM
: definisce la tabella in cui eseguire la query dei dati.WHERE
: la clausola opzionale SQL WHERE definisce una condizione di ricerca specifica in base alla quale vengono ordinati i risultati. Qui è possibile utilizzare 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éASC
néDESC
, il comando mette automaticamente i risultati in ordine alfabetico o numerico decrescente.
La clausola ORDER BY
ordina i valori NULL automaticamente 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 PostgreSQL, i valori NULL sono considerati come valori più alti: in ordine crescente sono quindi alla fine.
Possibilità di applicazione di ORDER BY
Alcune applicazioni pratiche di SQL ORDER BY sono:
- Ordinamento di informazioni sui prodotti in base al nome del prodotto, alla categoria o al prezzo
- Ordinamento di transazioni per importo, data o nominativo
- Organizzazione di ordini per quantità o valutazioni
- Ordinamento di dipendenti per stipendio, incarichi prestazioni o reparto
- Elenco delle scorte a magazzino per quantità o nome
- Ordinamento di consegne per codice postale o numero di tracking
- Ordinamento di elenchi dei clienti per regione o età
Un sistema di gestione di database scalabile e sicuro ti permette di beneficiare di tempi di accesso più brevi, prestazioni su misura e sicurezza in caso di anomalie. Esattamente le caratteristiche offerte dall’hosting SQL server di IONOS, con protezione dei dati conforme agli standard europei.
- Traffico illimitato e fino a 1 Gbit/s di larghezza di banda
- Storage SSD NVMe veloce
- Plesk Web Host Edition incluso
Esempi pratici per SQL ORDER BY
Nelle parti seguenti ti mostriamo tre pratici esempi di applicazione per comprendere meglio il funzionamento di ORDER BY
.
Ordinamento 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’ordinamento. Con ORDER BY
e ASC
puoi stabilire che l’ordinamento segua il “Prezzo” in ordine crescente. Procedi come segue:
SELECT *
FROM Prodotti
WHERE categoria = 'Bellezza'
ORDER BY Prezzo ASC;
sqlFiltraggio di gruppi di clienti
Supponiamo che in una tabella “Clienti” desideri mettere i nomi di tutti i clienti in Italia in ordine alfabetico applicando la condizione di ordinamento “Paese”. Per metterli in ordine crescente dalla A alla Z, non è necessario aggiungere 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;
sqlOrdinamento con più condizioni
Nell’esempio seguente, in una tabella “Prodotti” desideri mettere le voci della categoria “Elettronica” in ordine alfabetico crescente. Se la quantità ordinata è identica, allora organizzerai gli ordini per regione. La sintassi si presenta così:
SELECT *
FROM Prodotti
WHERE Categoria = 'Elettronica'
ORDER BY Quantità ASC, Regione DESC;
sqlAlternative a SQL ORDER BY
Un’alternativa che svolga la stessa funzione di ORDER BY
non esiste. Tuttavia, tra i comandi SQL che sono utilizzati spesso in combinazione con SQL ORDER BY
troviamo anche SQL GROUP BY. Mentre GROUP BY
permette ad esempio di raggruppare per categoria i record di dati presenti in colonne, ORDER BY
ti consente anche di ordinarli.
Esempio: vorresti raggruppare i valori degli ordini dei clienti per Paese e, successivamente, metterli in ordine crescente in base alla quantità media ordinata con la funzioni di aggregazione SQL AVG. La sintassi si presenta così:
SELECT Paese, AVG(Quantità)
FROM Clienti
WHERE Categoria = 'Elettronica'
GROUP BY Paese
ORDER BY AVG(Quantità) ASC;
sqlCon la clausola SQL HAVING puoi filtrare ulteriormente i record di dati ordinati in base a condizioni e criteri di ricerca definiti. Inoltre, con LIMIT
è possibile limitare l’insieme risultato a una quantità desiderata.