SQLite
 sql >> Database >  >> RDS >> SQLite

Come funziona SQLite Count()

Il count() di SQLite La funzione può essere utilizzata per restituire il numero di righe in un set di risultati.

Può anche essere utilizzato per restituire il numero di volte in cui una determinata colonna non è NULL nel set di risultati.

Può essere utilizzato in due modi. Se inserisci l'asterisco (* ) carattere jolly, restituirà il numero totale di righe nel gruppo. Se fornisci il nome di una colonna, restituirà il numero di volte in cui quella colonna non è NULL.

Sintassi

La sintassi è questa:

count(X)
count(*)

Quindi in questo caso, X potrebbe essere il nome di una colonna e l'asterisco (* ) viene utilizzato il carattere jolly per specificare il numero totale di righe nel gruppo.

Esempio:conteggio(*)

Ecco un esempio di base per dimostrare la sintassi dell'asterisco (*) per restituire il numero di righe in una tabella.

SELECT count(*) FROM Customer;

Risultato:

59

Ho eseguito questa query sul database di esempio Chinook, quindi risulta che ci sono 59 righe nel Cliente tabella.

Esempio:conteggio(X)

In questo esempio passo il nome di una specifica colonna della tabella.

SELECT count(Fax) FROM Customer;

Risultato:

12

In questo caso, il Fax la colonna ha 12 valori non NULL.

In altre parole, 47 righe contengono un valore NULL nel Fax colonna.

Utilizzo di una clausola WHERE

Il risultato di count() viene calcolato dopo qualsiasi WHERE clausole.

SELECT count(Fax) 
FROM Customer 
WHERE CustomerId <= 5;

Risultato:

2

In questo caso, nel Fax erano presenti solo due valori diversi da NULL colonna all'interno del set di risultati.

Ecco come appaiono i risultati con le colonne restituite (e senza usare count() funzione).

SELECT CustomerId, Fax 
FROM Customer 
WHERE CustomerId <= 5;

Risultato:

CustomerId  Fax               
----------  ------------------
1           +55 (12) 3923-5566
2                             
3                             
4                             
5           +420 2 4172 5555  

Quindi possiamo vedere che solo le righe 1 e 5 hanno valori non NULL nel Fax colonna.

Utilizzo di una clausola LIMIT

Il risultato non viene calcolato dopo alcun LIMIT clausola.

SELECT count(Fax) 
FROM Customer 
LIMIT 5;

Risultato:

12

Ma puoi invece fare qualcosa del genere:

SELECT count(Fax) 
FROM (SELECT Fax FROM Customer 
LIMIT 5);

Risultato:

2

Risultati raggruppati

Un pratico caso d'uso per count() è usarlo insieme a GROUP BY clausola, in modo che vengano restituite più righe, ciascuna rappresentante un gruppo, con un conteggio delle righe in quel gruppo.

Ecco un esempio.

SELECT 
  ar.Name, 
  count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
LIMIT 10;

Risultato:

Name             count(al.Title)
---------------  ---------------
David Coverdale  1              
Deep Purple      11             
Def Leppard      1              
Dennis Chambers  1              
Djavan           2              
Dread Zeppelin   1              

La parola chiave DISTINCT

Puoi aggiungere il DISTINCT parola chiave per contare solo valori distinti. In altre parole, puoi rimuovere i valori duplicati nel calcolo.

Per esempi di ciò, vedere Come rimuovere i duplicati dai risultati di SQLite Count().