sql >> Database >  >> RDS >> MariaDB

COUNT() Functie in MariaDB

In MariaDB, de COUNT() aggregatiefunctie retourneert een telling van het aantal niet-NULL-waarden van een expressie in de rijen die zijn opgehaald door een SELECT verklaring.

Voorbeeldgegevens

Stel dat we de volgende tabel hebben:

SELECT * 
FROM Pets;

Resultaat:

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

De volgende voorbeelden gebruiken de COUNT() functie bij het opvragen van deze tabel.

Voorbeeld

Zo telt u de rijen in de bovenstaande tabel:

SELECT COUNT(*)
FROM Pets;

Resultaat:

8

Dit vertelt ons dat er 8 rijen in de tabel zijn. Dat weten we omdat we het asterisk-jokerteken (* . hebben gebruikt) ) om alle rijen en alle kolommen op te geven.

Tel een specifieke kolom

U kunt ook een kolom opgeven om te tellen. De COUNT() functie telt alleen niet-NULL resultaten, dus als u een kolom specificeert die NULL . bevat waarden, worden die waarden niet meegeteld.

Hier is een voorbeeld om te laten zien wat ik bedoel.

SELECT COUNT(DOB)
FROM Pets;

Resultaat:

6

In dit geval de Pets tabel bevat twee NULL waarden in de DOB kolom (twee huisdieren hebben hun geboortedatum niet opgegeven), en dus COUNT(DOB) geeft 6 terug, in plaats van 8 toen we COUNT(*) gebruikten .

De reden COUNT(*) in het vorige voorbeeld alle rijen retourneerde, is omdat die twee rijen deed gegevens in de andere kolommen hebben.

Gefilterde resultaten

De COUNT() functie telt de rijen die door de query worden geretourneerd. Dus als u de resultaten filtert, wordt het resultaat van COUNT() zal dat weerspiegelen.

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

Resultaat:

2

In dit geval zijn er twee huisdieren met de naam Fluffy. Daarom zouden er twee rijen zijn geretourneerd door de zoekopdracht, en het resultaat van COUNT() is 2 .

Tel verschillende kolommen

We hebben de mogelijkheid om de DISTINCT . toe te voegen trefwoord om aan te geven dat alleen afzonderlijke waarden worden geretourneerd (zodat duplicaten worden uitgesloten):

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

Resultaat:

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

In dit geval, ook al zijn er acht PetName waarden, slechts zeven van hen zijn verschillend (twee zijn duplicaten - we hebben twee huisdieren genaamd Fluffy).

Het HAVING Clausule

U kunt COUNT() . opnemen in meerdere delen van een query. Het is niet alleen beperkt tot de SELECT lijst.

Hier is een voorbeeld dat COUNT() . gebruikt in zowel de HAVING clausule en de SELECT lijst:

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

Resultaat:

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

Zie SQL COUNT() voor beginners voor een meer gedetailleerde uitleg van dit voorbeeld, evenals een voorbeeld van het gebruik van COUNT() in een vensterfunctie.


  1. Converteer 'datetimeoffset' naar 'time' in SQL Server (T-SQL-voorbeelden)

  2. TO_CHAR van een Oracle PL/SQL TABLE-type

  3. Hoe kan ik ervoor zorgen dat mijn postgresql-database een hoofdletterongevoelige sortering gebruikt?

  4. Schakel tijdelijk alle beperkingen voor externe sleutels uit