SQLite count()
funktion kan bruges til at returnere antallet af rækker i et resultatsæt.
Det kan også bruges til at returnere det antal gange, en given kolonne ikke er NULL i resultatsættet.
Det kan bruges på to måder. Hvis du indtaster stjernen (*
) jokertegn, vil det returnere det samlede antal rækker i gruppen. Hvis du angiver navnet på en kolonne, vil den returnere det antal gange, den kolonne ikke er NULL.
Syntaks
Syntaksen ser sådan ud:
count(X)
count(*)
Så i dette tilfælde X
kunne være navnet på en kolonne og stjernen (*
) jokertegn bruges til at angive det samlede antal rækker i gruppen.
Eksempel:count(*)
Her er et grundlæggende eksempel for at demonstrere asterisk (*)-syntaksen for at returnere antallet af rækker i en tabel.
SELECT count(*) FROM Customer;
Resultat:
59
Jeg kørte denne forespørgsel på Chinook-eksempeldatabasen, og så viser det sig, at der er 59 rækker i Kunde tabel.
Eksempel:count(X)
I dette eksempel sender jeg navnet på en specifik kolonne i tabellen.
SELECT count(Fax) FROM Customer;
Resultat:
12
I dette tilfælde skal Fax kolonne har 12 ikke-NULL værdier.
Med andre ord indeholder 47 rækker en NULL-værdi i Fax kolonne.
Brug af en WHERE-klausul
Resultatet af count()
beregnes efter enhver Hvor klausuler.
SELECT count(Fax)
FROM Customer
WHERE CustomerId <= 5;
Resultat:
2
I dette tilfælde var der kun to ikke-NULL-værdier i Fax kolonne i resultatsættet.
Sådan ser resultaterne ud med returnerede kolonner (og uden brug af count()
funktion).
SELECT CustomerId, Fax
FROM Customer
WHERE CustomerId <= 5;
Resultat:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
Så vi kan se, at kun række 1 og 5 har ikke-NULL værdier i Fax kolonne.
Brug af en LIMIT-klausul
Resultatet beregnes ikke efter nogen LIMIT
klausul.
SELECT count(Fax)
FROM Customer
LIMIT 5;
Resultat:
12
Men du kan gøre sådan noget i stedet:
SELECT count(Fax)
FROM (SELECT Fax FROM Customer
LIMIT 5);
Resultat:
2
Grupperte resultater
Et praktisk anvendelsestilfælde for count()
er at bruge det sammen med GROUP BY
klausul, så der returneres flere rækker – hver repræsenterer en gruppe – med et antal rækker i den gruppe.
Her er et eksempel.
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;
Resultat:
Name count(al.Title) --------------- --------------- David Coverdale 1 Deep Purple 11 Def Leppard 1 Dennis Chambers 1 Djavan 2 Dread Zeppelin 1
Det SÆRLIGE søgeord
Du kan tilføje DISTINCT
nøgleord til kun at tælle forskellige værdier. Du kan med andre ord fjerne duplikerede værdier i beregningen.
For eksempler på dette se Sådan fjerner du dubletter fra SQLite Count()-resultater.