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

Fonction COUNT() dans MariaDB

Dans MariaDB, le COUNT() la fonction d'agrégation renvoie un décompte du nombre de valeurs non NULL d'une expression dans les lignes récupérées par un SELECT déclaration.

Exemple de données

Supposons que nous ayons le tableau suivant :

SELECT * 
FROM Pets;

Résultat :

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Les exemples suivants utiliseront le COUNT() fonction lors de l'interrogation de cette table.

Exemple

Voici comment compter les lignes dans le tableau ci-dessus :

SELECT COUNT(*)
FROM Pets;

Résultat :

8

Cela nous indique qu'il y a 8 lignes dans le tableau. Nous le savons parce que nous avons utilisé le caractère générique astérisque (* ) pour spécifier toutes les lignes et toutes les colonnes.

Compter une colonne spécifique

Vous pouvez également spécifier une colonne à compter. Le COUNT() la fonction ne compte que les non-NULL résultats, donc si vous spécifiez une colonne qui contient NULL valeurs, ces valeurs ne seront pas comptées.

Voici un exemple pour illustrer ce que je veux dire.

SELECT COUNT(DOB)
FROM Pets;

Résultat :

6

Dans ce cas, les Pets table contient deux NULL valeurs dans le DOB colonne (deux animaux n'ont pas fourni leur date de naissance), et donc COUNT(DOB) renvoie 6, au lieu de 8 lorsque nous utilisions COUNT(*) .

La raison COUNT(*) dans l'exemple précédent a renvoyé toutes les lignes, c'est parce que ces deux lignes l'ont fait avoir des données dans les autres colonnes.

Résultats filtrés

Le COUNT() La fonction compte les lignes renvoyées par la requête. Donc, si vous filtrez les résultats, le résultat de COUNT() reflétera cela.

SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';

Résultat :

2

Dans ce cas, il y a deux animaux de compagnie avec un nom de Fluffy. Par conséquent, deux lignes auraient été renvoyées par la requête, et le résultat de COUNT() est 2 .

Compter des colonnes distinctes

Nous avons la possibilité d'ajouter le DISTINCT mot-clé pour spécifier que seules des valeurs distinctes sont renvoyées (afin d'exclure les doublons) :

SELECT 
    COUNT(PetName) AS "All",
    COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;

Résultat :

+-----+----------+
| All | Distinct |
+-----+----------+
|   8 |        7 |
+-----+----------+

Dans ce cas, même s'il y a huit PetName valeurs, seules sept d'entre elles sont distinctes (deux sont des doublons - nous avons deux animaux appelés Fluffy).

Le HAVING Article

Vous pouvez inclure COUNT() dans plusieurs parties d'une requête. Ce n'est pas seulement limité au SELECT liste.

Voici un exemple qui utilise COUNT() à la fois dans le HAVING clause et le SELECT liste :

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;

Résultat :

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
+-------------+---------+

Voir SQL COUNT() pour les débutants pour une explication plus détaillée de cet exemple, ainsi qu'un exemple d'utilisation de COUNT() dans une fonction de fenêtre.