Corso
È ovvio che contare righe o valori è una parte importante dell'analisi dei dati. Non sorprende quindi che SQL abbia una funzione dedicata per aiutarti. Che tu stia identificando duplicati, calcolando totali per gruppo o filtrando dati, la funzione COUNT() è qui per aiutarti.
In questo articolo ti mostro i molti modi in cui COUNT() è utile, dalla sua sintassi di base a casi d'uso più interessanti con GROUP BY e HAVING. Valuta anche di iscriverti alla nostra SQL Associate Certification, un ottimo modo sia per imparare sia per arricchire il tuo CV.
Che cos'è la funzione COUNT() in SQL?
La funzione COUNT() restituisce il numero di righe che soddisfano un criterio.
Sintassi di SQL COUNT()
La sintassi di base di COUNT() è la seguente.
SELECT COUNT(column_name)
FROM table_name;
Varianti della sintassi consentono di raggiungere obiettivi diversi.
-
La sintassi
COUNT(*)permette di contare il numero di righe in una tabella -
La sintassi
COUNT(DISTINCT column)permette di contare il numero di valori distinti in una colonna -
La sintassi
COUNT(CASE WHEN condition THEN column END)permette di contare il numero di valori che soddisfano determinate condizioni.
COUNT(), usata con GROUP BY, è utile per contare il numero di righe appartenenti a ciascun gruppo.
COUNT(), usata con HAVING, è utile per filtrare i gruppi in base al numero di righe che contengono.
Illustreremo questi aspetti con gli esempi qui sotto.
Esempi della funzione SQL COUNT()
Esegui e modifica il codice da questo tutorial online
Esegui codiceContare il numero di righe con COUNT(*)
La tabella chiamata products contiene tutti i prodotti venduti da un'azienda. La clausola COUNT(*) ci permette di calcolare il numero di righe nella tabella.
SELECT
COUNT(*) AS number_of_rows
FROM products
|
|
|
321 |
Contare i valori unici con COUNT(DISTINCT …)
La sintassi COUNT(DISTINCT column) permette di contare il numero di valori unici in una colonna.
Per esempio, ogni prodotto ha un brand associato nella tabella products. Possiamo contare il numero di prodotti e di brand unici nella tabella.
SELECT
COUNT(DISTINCT product_id) AS unique_product_count,
COUNT(DISTINCT brand_id) AS unique_brand_count
FROM products
|
|
|
|
321 |
9 |
Contare le righe che soddisfano una condizione usando COUNT() con CASE WHEN
La sintassi COUNT(CASE WHEN condition THEN column END) permette di calcolare il numero di righe che soddisfano una condizione.
Per esempio, nella tabella products ogni prodotto ha un list_price. Possiamo calcolare quanti prodotti sono “expensive” (con un prezzo di listino superiore a 500 $) o meno.
SELECT
COUNT(CASE WHEN list_price >= 500 THEN product_id END) AS expensive_product_count,
COUNT(CASE WHEN list_price < 500 THEN product_id END) AS cheap_product_count
FROM products
|
|
|
|
213 |
108 |
Contare le righe per gruppo usando COUNT() con GROUP BY
COUNT() può essere usata con GROUP BY per trovare il numero di righe in ciascun gruppo.
Per esempio, la tabella dei prodotti contiene modelli di biciclette dal 2016 al 2019. Per trovare la distribuzione delle biciclette, possiamo usare COUNT(product_id) e GROUP BY model_year per contare il numero di prodotti per ciascun anno.
SELECT
model_year,
COUNT(product_id) AS product_count
FROM products
GROUP BY model_year
|
|
|
|
2016 |
26 |
|
2017 |
85 |
|
2018 |
204 |
|
2019 |
6 |
Filtrare i gruppi usando COUNT() con GROUP BY e HAVING
Nell'esempio 4 vediamo che COUNT() può essere usata con GROUP BY. Possiamo usare l'istruzione HAVING per filtrare i gruppi in base al numero di righe presenti in quel gruppo.
Per esempio, per trovare gli anni che hanno meno di 50 prodotti, possiamo usare la seguente sintassi.
SELECT
model_year
FROM products
GROUP BY model_year
HAVING COUNT(product_id) < 50
|
|
|
2016 |
|
2019 |
Requisiti tecnici
COUNT() è una funzione disponibile in tutte le versioni di SQL moderne. DataCamp offre corsi mirati per aiutarti a padroneggiare SQL nel contesto del sistema di database che preferisci. Ecco alcune opzioni per iniziare. Direi che Oracle è il più diverso, perché ha funzioni specifiche e funzionalità aggiuntive.
- Corso Creating PostgreSQL Databases
- Corso Introduction to SQL Server
- Corso Introduction to Oracle SQL
Approfondisci SQL
Continua a imparare SQL con DataCamp. Ho scritto altri tutorial per iniziare. Spero ti siano utili.
Valuta anche la nostra SQL Associate Certification, che secondo me fa un'ottima figura sul tuo CV o resume.

Data scientist presso Tiktok e studente magistrale al GeorgiaTech, ho una passione innata per la data science e ho costruito un percorso professionale unico che intreccia tecnologia, rischio e miglioramento continuo. Durante il mio periodo come Data Scientist presso Merchant Platform, ho mitigato rischi e contrastato le frodi usando modelli di dati complessi, facendo risparmiare migliaia di dollari ogni settimana. Ho affinato le mie competenze dedicando innumerevoli ore all’autoapprendimento, ottenendo certificazioni da istituzioni rinomate e diventando esperto in temi come Deep Learning, TensorFlow e Social Network Analysis. Su DataCamp e altre piattaforme educative metto a frutto questo bagaglio per ispirare e formare altre persone, aprendo nuove strade nel campo della data science e dimostrando che, con determinazione e i dati giusti, ogni rischio può trasformarsi in un’opportunità.
Domande frequenti su SQL COUNT()
COUNT() può contare solo righe specifiche?
Sì, puoi usare una clausola WHERE con COUNT() per contare solo le righe che soddisfano criteri specifici. Per esempio:
SELECT COUNT(*) FROM employees WHERE department = 'Sales';
Qual è la differenza tra COUNT(*) e COUNT(column_name)?
COUNT(*) conta tutte le righe in una tabella, incluse le righe con valori NULL. COUNT(column_name) conta solo le righe in cui la colonna specificata non è NULL.
Posso contare valori distinti usando COUNT()?
Sì, puoi contare i valori unici in una colonna combinando COUNT() con la parola chiave DISTINCT:
SELECT COUNT(DISTINCT department) FROM employees;
Come gestisce COUNT() le righe duplicate?
Per impostazione predefinita, COUNT(*) conta tutte le righe, incluse le duplicazioni. Per contare solo le righe uniche, usa COUNT(DISTINCT column_name).

