SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment fonctionne SQLite Count()

Le SQLite count() La fonction peut être utilisée pour renvoyer le nombre de lignes dans un jeu de résultats.

Il peut également être utilisé pour renvoyer le nombre de fois qu'une colonne donnée n'est pas NULL dans le jeu de résultats.

Il peut être utilisé de deux manières. Si vous passez l'astérisque (* ) caractère générique, il renverra le nombre total de lignes dans le groupe. Si vous fournissez le nom d'une colonne, il renverra le nombre de fois que cette colonne n'est pas NULL.

Syntaxe

La syntaxe ressemble à ceci :

count(X)
count(*)

Donc dans ce cas, X peut être le nom d'une colonne, et l'astérisque (* ) le caractère générique est utilisé pour spécifier le nombre total de lignes dans le groupe.

Exemple :compte(*)

Voici un exemple de base pour démontrer la syntaxe de l'astérisque (*) pour renvoyer le nombre de lignes dans une table.

SELECT count(*) FROM Customer;

Résultat :

59

J'ai exécuté cette requête sur l'exemple de base de données Chinook, et il s'avère donc qu'il y a 59 lignes dans le Customer tableau.

Exemple :compter(X)

Dans cet exemple, je passe le nom d'une colonne spécifique de la table.

SELECT count(Fax) FROM Customer;

Résultat :

12

Dans ce cas, le Fax colonne a 12 valeurs non NULL.

En d'autres termes, 47 lignes contiennent une valeur NULL dans le Fax colonne.

Utiliser une clause WHERE

Le résultat de count() est calculé après tout WHERE clauses.

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

Résultat :

2

Dans ce cas, il n'y avait que deux valeurs non NULL dans le Fax colonne dans le jeu de résultats.

Voici à quoi ressemblent les résultats avec les colonnes renvoyées (et sans utiliser le count() fonction).

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

Résultat :

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

Nous pouvons donc voir que seules les lignes 1 et 5 ont des valeurs non NULL dans le Fax colonne.

Utiliser une clause LIMIT

Le résultat n'est pas calculé après tout LIMIT clause.

SELECT count(Fax) 
FROM Customer 
LIMIT 5;

Résultat :

12

Mais vous pouvez faire quelque chose comme ceci à la place :

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

Résultat :

2

Résultats groupés

Un cas d'utilisation pratique pour count() est de l'utiliser en conjonction avec le GROUP BY clause, de sorte que plusieurs lignes soient renvoyées - chacune représentant un groupe - avec un nombre de lignes dans ce groupe.

Voici un exemple.

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;

Résultat :

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

Le mot-clé DISTINCT

Vous pouvez ajouter le DISTINCT mot-clé pour ne compter que les valeurs distinctes. En d'autres termes, vous pouvez supprimer les valeurs en double dans le calcul.

Pour des exemples, consultez Comment supprimer les doublons des résultats SQLite Count().