Les bases de données sont souvent employées pour répondre à la question : ``Combien de fois un certain type de données se trouve dans la table ?'' Par exemple, vous aimeriez savoir combien d'animaux vous avez, ou bien combien d'animaux chaque propriétaire possède, ou encore savoir différentes choses concernant vos animaux.
Savoir combien vous avez d'animaux revient à se poser la
question : ``Combien de lignes y a-t-il dans la table
animal
?'' parce qu'il y a un
enregistrement par animal. La fonction
COUNT()
compte le nombre de résultats non
NULL
, donc, la requête pour compter les
animaux ressemble à ceci :
mysql> SELECT COUNT(*) FROM animal;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+
Vous pouvez trouver également les noms des propriétaires des
animaux. Vous pouvez utiliser COUNT()
si
vous voulez trouver combien d'animaux possède chaque
propriétaire :
mysql> SELECT maitre, COUNT(*) FROM animal GROUP BY maitre;
+--------+----------+
| maitre | COUNT(*) |
+--------+----------+
| Benny | 2 |
| Diane | 2 |
| Gwen | 3 |
| Harold | 2 |
+--------+----------+
Notez l'utilisation de la clause GROUP BY
pour grouper tous les enregistrements par propriétaire. Sans
cela, vous auriez le message d'erreur suivant :
mysql> SELECT maitre, COUNT(maitre) FROM animal;
ERROR 1140 at line 1: Mixing of GROUP columns (MIN(),MAX(),COUNT()...)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT()
et GROUP BY
sont
utiles pour caractériser vos données de diverses fa¸ons.
Les exemples suivants montrent différentes manières pour
obtenir des statistiques sur les animaux.
Nombre d'animaux par espèce :
mysql> SELECT espece, COUNT(*) FROM animal GROUP BY espece;
+---------+----------+
| espece | COUNT(*) |
+---------+----------+
| oiseau | 2 |
| chat | 2 |
| chien | 3 |
| hamster | 1 |
| serpent | 1 |
+---------+----------+
Nombre d'animaux par sexe :
mysql> SELECT sexe, COUNT(*) FROM animal GROUP BY sexe;
+------+----------+
| sexe | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+
(Dans ce résultat, NULL
indique les sexes
inconnus.)
Nombre d'animaux par espèce et sexe :
mysql> SELECT espece, sexe, COUNT(*) FROM animal GROUP BY espece, sexe;
+---------+------+----------+
| espece | sexe | COUNT(*) |
+---------+------+----------+
| oiseau | NULL | 1 |
| oiseau | f | 1 |
| chat | f | 1 |
| chat | m | 1 |
| chien | f | 1 |
| chien | m | 2 |
| hamster | f | 1 |
| serpent | m | 1 |
+---------+------+----------+
Vous n'avez pas besoin de rechercher une table entière quand
vous employez COUNT()
. Par exemple, la
requête précédente, si vous voulez trouver uniquement les
chiens et les chats, ressemble à cela :
mysql>SELECT espece, sexe, COUNT(*) FROM animal
->WHERE espece = "chien" OR espece = "chat"
->GROUP BY espece, sexe;
+---------+------+----------+ | espece | sexe | COUNT(*) | +---------+------+----------+ | chat | f | 1 | | chat | m | 1 | | chien | f | 1 | | chien | m | 2 | +---------+------+----------+
Ou bien, si vous voulez trouver le nombre d'animaux par sexe, uniquement pour les animaux dont le sexe est connu :
mysql>SELECT espece, sexe, COUNT(*) FROM animal
->WHERE sexe IS NOT NULL
->GROUP BY espece, sexe;
+---------+------+----------+ | espece | sexe | COUNT(*) | +---------+------+----------+ | oiseau | f | 1 | | chat | f | 1 | | chat | m | 1 | | chien | f | 1 | | chien | m | 2 | | hamster | f | 1 | | serpent | m | 1 | +---------+------+----------+
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.