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().