back to top

MySQL COUNT: conteggiare i record in una tabella

MySQL COUNT è una funzione che consente di contare il numero di record presenti in una tabella del database MySQL o in una sua selezione.

Questa funzione è spesso utilizzata in combinazione con altri comandi SQL come SELECT, WHERE, GROUP BY e JOIN per ottenere informazioni più specifiche in base alle esigenze.

In questo articolo, esploreremo in dettaglio la funzione MySQL COUNT, come funziona e come utilizzarla in modo efficace per ottenere informazioni utili dai dati presenti in una tabella MySQL.

La sintassi di MySQL COUNT

La sintassi di MySQL COUNT è piuttosto semplice:

SELECT COUNT(*) FROM nome_tabella;

In questa sintassi, "nome_tabella" indica il nome della tabella MySQL di cui si desidera contare il numero di record.

La funzione COUNT(*) restituisce il numero totale di record presenti nella tabella specificata. È importante notare che l’asterisco tra le parentesi tonde dopo COUNT sta ad indicare che vogliamo contare tutte le righe nella tabella.

Esempio di utilizzo di MySQL COUNT

Per comprendere meglio come funziona MySQL COUNT, vediamo un esempio pratico. Immaginiamo di avere una tabella "clienti" che contiene i dati di tutti i clienti della nostra azienda. La tabella potrebbe avere campi come "ID", "Nome", "Cognome", "Indirizzo", "Citta", "Stato" e "CAP".

Se volessimo contare il numero totale di clienti presenti in questa tabella, possiamo utilizzare la seguente query:

SELECT COUNT(*) FROM clienti;

Questa query restituirebbe il numero totale di record presenti nella tabella "clienti".

Che differenza c’è tra COUNT(*) e COUNT(nome_campo)?

Nell’esempio visto sopra, come detto, abbiamo utilizzato COUNT(*) per conteggiare tutti i record della selezione. Nulla vieta, tuttavia, di utilizzare al posto dell’asterisco il nome di uno dei campi della tabella:

SELECT COUNT(nome_campo) FROM nome_tabella;

La differenza tra le due sintassi riguarda il numero di record che vengono conteggiati:

  • COUNT(*) conta tutti i record di una selezione indipendentemente dal valore dei campi specifici;
  • COUNT(nome_campo) conta il numero di record in cui il campo specificato ha un valore diverso da NULL; quindi, se un record ha un valore nullo per il campo specificato, non verrà incluso nel conteggio.

Ad esempio, supponiamo di avere nella nostra tabella "clienti" un campo "Telefono". Se volessimo contare il numero di record in cui il campo "Telefono" non è nullo, possiamo utilizzare la seguente query:

SELECT COUNT(Telefono) FROM clienti;

Questa restituirà non il numero totale di clienti… ma solo il numero dei clienti di cui conosciamo il numero di telefono.

Conteggio dei record filtrati con MySQL COUNT e WHERE

In molti casi, non si desidera contare il numero totale di record presenti in una tabella, ma solo il numero di record che soddisfano determinati criteri. In questi casi, è possibile utilizzare la clausola WHERE insieme alla funzione MySQL COUNT.

Ad esempio, si supponga di voler contare il numero di clienti della nostra azienda che vivono in Italia. La query sarebbe la seguente:

SELECT COUNT(*) FROM clienti WHERE Stato = 'Italia';

In questo caso, la clausola WHERE specifica il criterio di selezione, ovvero "Stato = ‘Italia’". La query COUNT restituirà il numero di record nella tabella "clienti" in cui lo stato è "Italia".

Conteggio dei record con MySQL COUNT e GROUP BY

In alcuni casi, è possibile che si voglia contare il numero di record presenti in una tabella raggruppando i valori di uno o più campi specifici. In questi casi, è possibile utilizzare la clausola GROUP BY insieme alla funzione MySQL COUNT.

Ad esempio, supponiamo di voler contare il numero di clienti in ogni stato. La query sarebbe la seguente:

SELECT Stato, COUNT(*) AS QuantiClienti FROM clienti GROUP BY Stato;

In questo caso, la clausola GROUP BY viene utilizzata per raggruppare i record in base allo stato in cui abitano i nostri clienti. La query restituirà il numero di record presenti in ogni stato, ad esempio:

StatoQuantiClienti
Francia27
Germania45
Italia486
Svizzera107

Come potete vedere la nostra query non restituisce il totale dei clienti ma, grazie a GOUP BY, suddivide il conteggio in base al campo di raggruppamento (nel nostro esempio lo stato di residenza).

Utilizzare COUNT in combinazione con DISTINCT

Attraverso la combinazione di COUNT e DISTINCT è possibile contare il numero di valori distinti presenti in una colonna di una tabella. Questa funzione è utilizzata quando si desidera contare il numero di valori univoci in una colonna, escludendo cioè eventuali valori duplicati.

La sintassi di COUNT DISTINCT è la seguente:

SELECT COUNT(DISTINCT nome_colonna) FROM nome_tabella;

Torniamo alla nostra ipotetica tabella "clienti" e supponiamo di voler conoscere il numero di email uniche presenti nella tabella "clienti". Per farlo potremmo utilizzare la seguente query:

SELECT COUNT(DISTINCT Email) FROM clienti;

Questa query restituisce il numero di email distinte presenti nella colonna "Email" della tabella "clienti".

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

In questa guida...