Fondamenti

COUNT(*) o COUNT(colonna)?

La differenza sembra piccola, ma può modificare un KPI di completezza o volume.

Team SQL.tn7min
Due contatori confrontano tutte le righe con le celle effettivamente compilate

Cosa vuoi veramente contare?

COUNT(*) conta tutte le linee perimetrali. COUNT(telephone) conta solo le linee in cui il telefono non è NULL.

L'utilizzo di entrambi nella stessa query produce un controllo di completezza: popolazione totale, valori immessi e differenza.

I nomi, gli importi e i dati utilizzati in questo articolo sono fittizi e creati a scopo didattico.

La domanda è stata spiegata

Inizia definendo cosa dovrebbe rappresentare una riga del risultato. Questa decisione determina le colonne, i raggruppamenti e i controlli necessari.

L'esempio seguente isola il meccanismo principale. Eseguilo, osserva il risultato, quindi modifica una clausola alla volta per comprenderne l'effetto.

Misurare i telefoni inseriti
SELECT
  COUNT(*) AS clients_total,
  COUNT(telephone) AS telephones_renseignes,
  COUNT(*) - COUNT(telephone) AS telephones_absents
FROM clients;

Leggi il risultato come un analista

Le tre colonne devono essere riconciliate: quelle inserite più quelle assenti equivalgono al totale. Questo controllo rende spiegabile la tariffa finale.

Dopo join, COUNT(*) può contare anche le linee moltiplicate. Controllare sempre il livello di dettaglio prima di interpretare il volume.

  • Definire la popolazione prima di contare.
  • Misurare il NULL della colonna contata.
  • Controllare l'effetto di join.
  • Confronta il volume dettagliato e aggregato.

Errori che distorcono l'analisi

Una query può essere valida senza rispondere correttamente alla domanda. Gli errori più costosi spesso sono silenziosi: perimetro sbagliato, linea moltiplicata o valore mancante interpretato come zero.

Prima di condividere il risultato, confrontalo con un piccolo campione calcolato manualmente e mantieni la definizione dell'ambito con la query.

  • Presenta COUNT(colonna) come numero di record restituiti.
  • Dimentica lo NULL.
  • Contare dopo molti-a-molti join.
  • Utilizza DISTINCT per nascondere una moltiplicazione mancante.

Mettiti in pratica

Utilizza l'esercizio di completezza per calcolare un tasso e proteggere la divisione con NULLIF.

Il simulatore SQL di SQL.tn esegue solo query di lettura su dati fittizi nel tuo browser. Puoi provare più scritture e confrontare i risultati senza installare alcun software.

Metti in pratica questa guida.

Apri l’esercizio collegato, esegui la query e confronta il risultato atteso.

Inizia l’esercizio