De SQLite count()
functie kan worden gebruikt om het aantal rijen in een resultatenset te retourneren.
Het kan ook worden gebruikt om het aantal keren terug te geven dat een bepaalde kolom niet NULL is in de resultatenset.
Het kan op twee manieren worden gebruikt. Als u het sterretje (*
) jokerteken, retourneert het het totale aantal rijen in de groep. Als u de naam van een kolom opgeeft, wordt het aantal keren geretourneerd dat die kolom niet NULL is.
Syntaxis
De syntaxis gaat als volgt:
count(X)
count(*)
Dus in dit geval X
kan de naam van een kolom zijn, en de asterisk (*
) jokerteken wordt gebruikt om het totale aantal rijen in de groep op te geven.
Voorbeeld:count(*)
Hier is een eenvoudig voorbeeld om de asterisk (*)-syntaxis te demonstreren om het aantal rijen in een tabel te retourneren.
SELECT count(*) FROM Customer;
Resultaat:
59
Ik heb deze query uitgevoerd op de Chinook-voorbeelddatabase en het blijkt dat er 59 rijen zijn in de Klant tafel.
Voorbeeld:count(X)
In dit voorbeeld geef ik de naam van een specifieke kolom van de tabel door.
SELECT count(Fax) FROM Customer;
Resultaat:
12
In dit geval is de Fax kolom heeft 12 niet-NULL-waarden.
Met andere woorden, 47 rijen bevatten een NULL-waarde in de Fax kolom.
Een WHERE-clausule gebruiken
Het resultaat van count()
wordt berekend na een WHERE
clausules.
SELECT count(Fax)
FROM Customer
WHERE CustomerId <= 5;
Resultaat:
2
In dit geval waren er slechts twee niet-NULL-waarden in de Fax kolom binnen de resultatenset.
Zo zien de resultaten eruit met geretourneerde kolommen (en zonder gebruik van de count()
functie).
SELECT CustomerId, Fax
FROM Customer
WHERE CustomerId <= 5;
Resultaat:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
We kunnen dus zien dat alleen rijen 1 en 5 niet-NULL-waarden hebben in de Fax kolom.
Een LIMIT-clausule gebruiken
Het resultaat wordt niet berekend na een LIMIT
clausule.
SELECT count(Fax)
FROM Customer
LIMIT 5;
Resultaat:
12
Maar je kunt in plaats daarvan iets als dit doen:
SELECT count(Fax)
FROM (SELECT Fax FROM Customer
LIMIT 5);
Resultaat:
2
Gegroepeerde resultaten
Een handige use case voor count()
is om het te gebruiken in combinatie met de GROUP BY
clausule, zodat er meerdere rijen worden geretourneerd – die elk een groep vertegenwoordigen – met een telling van de rijen in die groep.
Hier is een voorbeeld.
SELECT
ar.Name,
count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
LIMIT 10;
Resultaat:
Name count(al.Title) --------------- --------------- David Coverdale 1 Deep Purple 11 Def Leppard 1 Dennis Chambers 1 Djavan 2 Dread Zeppelin 1
Het DISTINCT-zoekwoord
U kunt de DISTINCT
. toevoegen trefwoord om alleen afzonderlijke waarden te tellen. Met andere woorden, u kunt dubbele waarden in de berekening verwijderen.
Zie voor voorbeelden hiervan Duplicaten verwijderen uit SQLite Count()-resultaten.