Come ottenere i primi n record combinando ORDER BY e LIMIT in SQL

Ottenere i primi n record che soddisfano determinate condizioni da un database è un’esigenza comune in molti scenari. Per realizzarlo in SQL, è utile combinare le clausole ORDER BY e LIMIT. In questo articolo, spiegheremo come utilizzare queste clausole, dalle nozioni di base agli esempi pratici, per aiutarti a recuperare i dati in modo efficiente e migliorare le prestazioni operative.

Indice

Sintassi base di ORDER BY ed esempi di utilizzo

La clausola ORDER BY in SQL viene utilizzata per ordinare i risultati della query in base a specifiche colonne. Ciò consente di visualizzare le righe del set di risultati in ordine crescente o decrescente.

Sintassi base di ORDER BY

La sintassi di base della clausola ORDER BY è la seguente:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • column1, column2, ...: Colonne su cui basare l’ordinamento
  • ASC: Ordine crescente (predefinito)
  • DESC: Ordine decrescente

Esempio di utilizzo di ORDER BY

Ad esempio, per ottenere un elenco di dipendenti ordinato per età, puoi utilizzare una query come la seguente:

SELECT employee_id, name, age
FROM employees
ORDER BY age ASC;

Questa query visualizza i dipendenti in ordine crescente di età.

Ordinamento su più colonne

Per ordinare in base a più colonne, puoi scrivere una query come questa:

SELECT employee_id, name, age, salary
FROM employees
ORDER BY age DESC, salary ASC;

Questa query ordina prima per età in ordine decrescente, quindi per salario in ordine crescente.

Sintassi base di LIMIT ed esempi di utilizzo

La clausola LIMIT in SQL viene utilizzata per limitare il numero di righe restituite da una query. Ciò consente di recuperare in modo efficiente solo i primi n record da set di dati di grandi dimensioni.

Sintassi base di LIMIT

La sintassi di base della clausola LIMIT è la seguente:

SELECT column1, column2, ...
FROM table_name
LIMIT number_of_rows;
  • number_of_rows: Numero di righe da restituire

Esempio di utilizzo di LIMIT

Ad esempio, per ottenere i primi 5 record dal database dei dipendenti, puoi usare una query come questa:

SELECT employee_id, name, age
FROM employees
LIMIT 5;

Questa query restituisce le prime 5 righe dei dati dei dipendenti.

Utilizzo di LIMIT in combinazione con OFFSET

Con OFFSET, puoi specificare la posizione iniziale delle righe da recuperare. Ad esempio, per ottenere i record dalla riga 6 alla 10, utilizza la seguente query:

SELECT employee_id, name, age
FROM employees
LIMIT 5 OFFSET 5;

Questa query restituisce le righe dalla 6ª alla 10ª nel database dei dipendenti.

Come eseguire una query combinando ORDER BY e LIMIT

Combinando ORDER BY e LIMIT, puoi recuperare in modo efficiente i primi n record ordinati in base a specifici criteri. Questo è molto utile per visualizzare classifiche o ottenere i dati principali.

Sintassi di base della combinazione

La sintassi di base di una query che combina ORDER BY e LIMIT è la seguente:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC]
LIMIT number_of_rows;
  • ORDER BY column1 [ASC|DESC]: Criterio di ordinamento
  • LIMIT number_of_rows: Numero di righe da restituire

Esempio di utilizzo: Ottenere i 5 prodotti con maggiori vendite

Ad esempio, per ottenere i primi 5 prodotti con le vendite più alte, puoi utilizzare la seguente query:

SELECT product_id, product_name, sales_amount
FROM sales
ORDER BY sales_amount DESC
LIMIT 5;

Questa query visualizza i primi 5 prodotti in ordine decrescente di vendite.

Utilizzo di più criteri di ordinamento con LIMIT

Ecco un esempio di come recuperare i primi n record ordinati in base a più criteri. Ad esempio, per ottenere i 5 prodotti principali in ordine di categoria e vendite:

SELECT category, product_id, product_name, sales_amount
FROM sales
ORDER BY category ASC, sales_amount DESC
LIMIT 5;

Questa query ordina per categoria in ordine crescente e per vendite in ordine decrescente, mostrando i primi 5 prodotti per categoria.

Esempi di scenari pratici per ottenere i primi n record

Utilizzando ORDER BY e LIMIT, è possibile recuperare i primi n record in vari scenari pratici. Di seguito alcuni esempi di applicazione.

Estrazione dei primi n clienti con acquisti più alti dalla cronologia acquisti

Ad esempio, per estrarre i 10 clienti con gli acquisti più alti, puoi utilizzare la seguente query:

SELECT customer_id, customer_name, total_purchase_amount
FROM customers
ORDER BY total_purchase_amount DESC
LIMIT 10;

Questa query ordina i clienti in ordine decrescente in base all’importo totale degli acquisti e restituisce i primi 10.

Ottenere i primi n dipendenti per valutazione delle prestazioni

Per ottenere i primi 5 dipendenti in base al punteggio di valutazione delle prestazioni:

SELECT employee_id, employee_name, performance_score
FROM employees
ORDER BY performance_score DESC
LIMIT 5;

Questa query ordina i dipendenti in base al punteggio di prestazione in ordine decrescente e visualizza i primi 5.

Visualizzazione della classifica di vendita dei prodotti

Ad esempio, per ottenere i primi 5 prodotti in una specifica categoria di vendita:

SELECT product_id, product_name, sales_amount
FROM products
WHERE category = 'Electronics'
ORDER BY sales_amount DESC
LIMIT 5;

Questa query visualizza i primi 5 prodotti nella categoria “Electronics” ordinati per vendite.

Ottenere la classifica di popolarità degli articoli del blog

Per ottenere i primi 5 articoli di un blog in base al numero di visualizzazioni:

SELECT post_id, post_title, view_count
FROM blog_posts
ORDER BY view_count DESC
LIMIT 5;

Questa query visualizza i primi 5 articoli più visualizzati di un blog in ordine decrescente di visualizzazioni.

Ottimizzazione delle prestazioni SQL

Quando utilizzi ORDER BY e LIMIT, è importante ottimizzare le prestazioni. L’uso corretto degli indici e l’ottimizzazione delle query possono migliorare la velocità di recupero dei dati.

Utilizzo degli indici

Impostare un indice sulle colonne utilizzate nella clausola ORDER BY può migliorare notevolmente la velocità di esecuzione della query. Ad esempio, per impostare un indice sulla colonna sales_amount:

CREATE INDEX idx_sales_amount ON sales(sales_amount);

Questo indice migliora le prestazioni durante l’ordinamento in base a sales_amount.

Verifica e ottimizzazione del piano di query

Utilizza il comando EXPLAIN per esaminare il piano di esecuzione della query e capire come viene eseguita. Questo aiuta a individuare i colli di bottiglia e a orientare l’ottimizzazione:

EXPLAIN SELECT product_id, product_name, sales_amount
FROM sales
ORDER BY sales_amount DESC
LIMIT 10;

Questo comando mostra il piano di esecuzione della query e illustra come vengono recuperati i dati.

Utilizzo delle subquery

In alcuni casi, è possibile utilizzare subquery per filtrare o aggregare i dati, riducendo il carico sulla query principale. Ad esempio, per ottenere i prodotti principali nella categoria con le vendite maggiori:

SELECT product_id, product_name, sales_amount
FROM products
WHERE category = (
  SELECT category
  FROM sales
  GROUP BY category
  ORDER BY SUM(sales_amount) DESC
  LIMIT 1
)
ORDER BY sales_amount DESC
LIMIT 5;

Questa query identifica la categoria con le vendite più alte e ottiene i primi 5 prodotti di quella categoria.

Esercizi pratici: query SQL con ORDER BY e LIMIT

Per verificare le conoscenze acquisite, prova a risolvere i seguenti esercizi. Questi esercizi ti aiuteranno a consolidare la comprensione di ORDER BY e LIMIT.

Esercizio 1: Ottenere i 5 dipendenti più anziani ordinati per età

Scrivi una query che ordini i dipendenti per età in ordine decrescente e restituisca i 5 dipendenti più anziani.

SELECT employee_id, name, age
FROM employees
ORDER BY age DESC
LIMIT 5;

Esercizio 2: Ottenere la classifica di vendita dei prodotti

Scrivi una query per ottenere i primi 10 prodotti ordinati per ammontare di vendite in ordine decrescente.

SELECT product_id, product_name, sales_amount
FROM products
ORDER BY sales_amount DESC
LIMIT 10;

Esercizio 3: Ottenere i 3 prodotti principali di una categoria specifica

Scrivi una query per ottenere i primi 3 prodotti nella categoria ‘Books’ ordinati per vendite in ordine decrescente.

SELECT product_id, product_name, sales_amount
FROM products
WHERE category = 'Books'
ORDER BY sales_amount DESC
LIMIT 3;

Esercizio 4: Ottenere i 5 migliori clienti dalla cronologia degli acquisti

Scrivi una query per ottenere i primi 5 clienti ordinati per ammontare totale degli acquisti in ordine decrescente.

SELECT customer_id, customer_name, total_purchase_amount
FROM customers
ORDER BY total_purchase_amount DESC
LIMIT 5;

Soluzioni ed analisi degli esercizi

Di seguito sono riportate le soluzioni e le spiegazioni degli esercizi precedenti. Rivedi le query SQL per consolidare la tua comprensione.

Esercizio 1: Ottenere i 5 dipendenti più anziani ordinati per età

SELECT employee_id, name, age
FROM employees
ORDER BY age DESC
LIMIT 5;

Questa query ordina i dati dei dipendenti per età in ordine decrescente e restituisce i primi 5 dipendenti più anziani. La clausola ORDER BY ordina per età, mentre LIMIT specifica i primi 5 record.

Esercizio 2: Ottenere la classifica di vendita dei prodotti

SELECT product_id, product_name, sales_amount
FROM products
ORDER BY sales_amount DESC
LIMIT 10;

Questa query ordina i prodotti per ammontare di vendite in ordine decrescente e restituisce i primi 10. La clausola ORDER BY ordina per ammontare di vendite, mentre LIMIT restituisce solo i primi 10 prodotti.

Esercizio 3: Ottenere i 3 prodotti principali di una categoria specifica

SELECT product_id, product_name, sales_amount
FROM products
WHERE category = 'Books'
ORDER BY sales_amount DESC
LIMIT 3;

Questa query ordina i prodotti della categoria “Books” per ammontare di vendite in ordine decrescente e restituisce i primi 3. La clausola WHERE filtra per categoria, ORDER BY ordina per vendite, e LIMIT restituisce solo i primi 3 record.

Esercizio 4: Ottenere i 5 migliori clienti dalla cronologia degli acquisti

SELECT customer_id, customer_name, total_purchase_amount
FROM customers
ORDER BY total_purchase_amount DESC
LIMIT 5;

Questa query ordina i clienti per importo totale degli acquisti in ordine decrescente e restituisce i primi 5 clienti. La clausola ORDER BY ordina per acquisti, mentre LIMIT limita il risultato ai primi 5 record.

Conclusione

In questo articolo abbiamo spiegato come utilizzare ORDER BY e LIMIT in SQL per ottenere in modo efficiente i primi n record di dati. La clausola ORDER BY ordina i dati in base a criteri specifici, mentre LIMIT limita il numero di righe restituite. Queste tecniche possono essere applicate a scenari come la visualizzazione di classifiche o l’estrazione dei migliori record.

Per ottimizzare le prestazioni, è importante impostare indici appropriati e verificare il piano di esecuzione delle query. Inoltre, abbiamo esaminato esempi pratici e svolto esercizi per consolidare le conoscenze. Utilizza queste tecniche per gestire i tuoi database in modo più efficiente.

Indice