Vous travaillez avec des tables et souhaitez connaître le nombre d’éléments dans une colonne ou avec un filtre ? La fonction d’agrégation COUNT() en SQL permet de compter le nombre d’enregistrements dans une table. Cette fonction est particulièrement pratique si vous souhaitez connaître le nombre d’utilisateurs présents en ligne ou encore le nombre de commentaires sur un article de blog. Régulièrement utilisée par les utilisateurs de SQL, découvrez la syntaxe et les cas d’utilisation de la fonction COUNT().
La syntaxe de SQL COUNT()
Il existe plusieurs manières d’utiliser la fonction COUNT via une requête SQL. La première permet de connaître le nombre total de lignes, nulles ou non :
SELECT COUNT(*) FROM table
Ensuite, vous pouvez obtenir le nombre total d’éléments sur une colonne en particulier. Pour cette fonction, les enregistrements avec une valeur nulle ne seront pas comptabilisés. Pour une colonne nommée « nom_colonne », voici la syntaxe pour compter les enregistrements :
SELECT COUNT(nom_colonne) FROM table
La dernière syntaxe de COUNT permet de comptabiliser les éléments uniques pour une colonne. Cela signifie que les doublons n’affectent pas le résultat de la fonction pour la colonne sélectionnée. Pour une colonne nommée « nom_colonne », la syntaxe pour comptabiliser le nombre de valeurs uniques est la suivante :
SELECT COUNT(DISTINCT nom_colonne) FROM table
Pour optimiser la lisibilité des résultats, vous pouvez filtrer les lignes avec GROUP BY. Ainsi, la fonction retourne le nombre de lignes de chaque groupe. Notez que les doublons et les valeurs nulles sont comptabilisés.
Comment est utilisé la fonction COUNT() ?
En fonction de l’utilisation de la fonction COUNT(), les résultats sont différents. Découvrez concrètement comment l’utiliser dépendamment de votre cas d’usage.
Utilisation de COUNT(*)
Admettons que vous travaillez dans une entreprise appelée FinanceIncorporation. Vous recherchez le nombre total d’employés au sein de l’organisation. L’utilisation de la fonction COUNT() est alors utile.
SELECT COUNT(*)
FROM RessourcesHumaines.Employes;
Les résultats obtenus seront alors :
-----------
490
(1 row(s) affected)
Utilisation de COUNT() avec GROUP BY
Si votre table contient une colonne nommée ‘departement’ catégorisant chaque personne à un département dans l’entreprise. Avec l’utilisation de la clause GROUP BY, vous obtenez le nombre d’employés par département. La requête prendrait alors la forme suivante :
SELECT COUNT(*)
FROM RessourcesHumaines.Employes;
GROUP BY departement;
Utilisation de COUNT() avec WHERE
Pour garder les exemples de l’entreprise FinaceIncorporation, admettons que vous souhaitiez trouver le nombre de commerciaux ayant vendu pour plus de 25 000 € de logiciels. La requête prendrait alors la forme suivante :
SELECT COUNT(*)
FROM Ventes.Commerciaux
WHERE ValeurVendue > 25000;
Ici, l’instruction WHERE permet d’appliquer un filtre aux enregistrements Where applique un filtre aux enregistrements, précisant ainsi les résultats de votre requête. Une autre instruction optionnelle pratique est ORDER BY. Cette expression est utilisée pour afficher le résultat de la requête dans un ordre donné.
Utilisation de COUNT(colonne)
Une autre méthode permet de compter le nombre d’utilisateurs inscrits d’un site e-commerce qui ont effectué un achat. Admettons que vous disposez d’une table “id_achats”. S’il n’y a pas d’achat, la valeur est nulle et ne sera donc pas comptabilisée. La requête prendrait donc la forme suivante :
SELECT COUNT(id_dernier_achat) FROM utilisateur
Peut-on avoir plusieurs COUNT() dans une seule requête SQL ?
Lors d’un projet, vous pouvez rencontrer une situation dans laquelle vous devez effectuer plusieurs appels dans une base de données. Néanmoins, cela reste chronophage et pour de meilleures performances, il est préférable de réduire ces appels.
Plutôt que d’effectuer 3 requêtes successives :
SELECT COUNT(*) FROM table1;
SELECT COUNT(*) FROM table2;
SELECT COUNT(*) FROM table2 WHERE is_valid = 1;
Vous pouvez regrouper ces requêtes en une seule pour retourner un enregistrement contenant les valeurs count1, count2 et count3 :
SELECT
(SELECT COUNT(*) FROM table1) as count1,
(SELECT COUNT(*) FROM table2) as count2,
(SELECT COUNT(*) FROM table2 WHERE is_valid = 1) as count3
Regrouper plusieurs requêtes en une seule est une fonctionnalité utile lorsque vous souhaitez compter le nombre de membres inscrits, connectés, le nombre de visiteurs en ligne ou encore les messages non lus et les notifications d’un membre.
Conclusion sur l’utilisation de COUNT() en SQL
La fonction d’agrégation COUNT() permet de compter le nombre d’enregistrements dans une table. Grâce à ses syntaxes avec WHERE et COUNT(DISTINCT), il est possible d’obtenir le nombre d’enregistrements avec une requête plus précise, offrant ainsi plus de lisibilité au résultat. Enfin, plusieurs requêtes COUNT() peuvent être regroupées afin d’optimiser les performances et d’éviter plusieurs appels répétitifs.
Si vous désirez en savoir plus sur SQL, découvrez notre dossier complet sur ce sujet. Sinon, apprenez à maîtriser ce langage informatique de requête de bases de données relationnelles à travers l’une des formations proposées par DataScientest.