sql >> Database teknologi >  >> RDS >> MariaDB

COUNT() Funktion i MariaDB

I MariaDB er COUNT() aggregeret funktion returnerer en optælling af antallet af ikke-NULL værdier af et udtryk i rækkerne hentet af en SELECT erklæring.

Eksempel på data

Antag, at vi har følgende tabel:

SELECT * 
FROM Pets;

Resultat:

+-------+-----------+---------+---------+------------+
| 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       |
+-------+-----------+---------+---------+------------+

Følgende eksempler vil bruge COUNT() funktion, når du forespørger i denne tabel.

Eksempel

Sådan tæller du rækkerne i ovenstående tabel:

SELECT COUNT(*)
FROM Pets;

Resultat:

8

Dette fortæller os, at der er 8 rækker i tabellen. Vi ved det, fordi vi brugte stjerne-jokertegnet (* ) for at angive alle rækker og alle kolonner.

Tæl en specifik kolonne

Du kan også angive en kolonne, der skal tælles. COUNT() funktion tæller kun ikke-NULL resultater, så hvis du angiver en kolonne, der indeholder NULL værdier, vil disse værdier ikke blive talt med.

Her er et eksempel for at vise, hvad jeg mener.

SELECT COUNT(DOB)
FROM Pets;

Resultat:

6

I dette tilfælde er Pets tabel indeholder to NULL værdier i DOB kolonne (to kæledyr har ikke oplyst deres fødselsdato), og så COUNT(DOB) returnerer 6 i stedet for 8, når vi brugte COUNT(*) .

Årsagen COUNT(*) i det forrige eksempel returnerede alle rækker, fordi de to rækker gjorde har data i de andre kolonner.

Filtrerede resultater

COUNT() funktion tæller rækkerne, der returneres af forespørgslen. Så hvis du filtrerer resultaterne, er resultatet af COUNT() vil afspejle det.

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

Resultat:

2

I dette tilfælde er der to kæledyr med navnet Fluffy. Derfor ville to rækker være blevet returneret af forespørgslen og resultatet af COUNT() er 2 .

Tæl forskellige kolonner

Vi har mulighed for at tilføje DISTINCT nøgleord for at angive, at der kun returneres forskellige værdier (så det udelukker dubletter):

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

Resultat:

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

I dette tilfælde, selvom der er otte PetName værdier, kun syv af dem er forskellige (to er dubletter – vi har to kæledyr kaldet Fluffy).

HAVING Klausul

Du kan inkludere COUNT() i flere dele af en forespørgsel. Det er ikke kun begrænset til SELECT liste.

Her er et eksempel, der bruger COUNT() i både HAVING klausulen og SELECT liste:

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

Resultat:

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

Se SQL COUNT() for begyndere for en mere detaljeret forklaring af dette eksempel, samt et eksempel på brug af COUNT() i en vinduesfunktion.


  1. Python:Forespørgsel til data efter lyd

  2. ORA-00904 ugyldig identifikator på afkodningsalias

  3. Den mest effektive måde at indsætte rækker i MySQL-databasen

  4. Hvad er det maksimale antal tilladte parametre pr. databaseudbydertype?