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.