SQLite count() funktionen kan användas för att returnera antalet rader i en resultatuppsättning.
Den kan också användas för att returnera antalet gånger en given kolumn inte är NULL i resultatuppsättningen.
Den kan användas på två sätt. Om du anger asterisken (* ) jokertecken, kommer det att returnera det totala antalet rader i gruppen. Om du anger namnet på en kolumn kommer den att returnera antalet gånger den kolumnen inte är NULL.
Syntax
Syntaxen ser ut så här:
count(X)
count(*)
Så i det här fallet, X kan vara namnet på en kolumn och asterisken (* ) jokertecken används för att ange det totala antalet rader i gruppen.
Exempel:count(*)
Här är ett grundläggande exempel för att visa asterisk (*)-syntaxen för att returnera antalet rader i en tabell.
SELECT count(*) FROM Customer; Resultat:
59
Jag körde den här frågan på Chinook-exempeldatabasen, och så visar det sig att det finns 59 rader i Kund bord.
Exempel:count(X)
I det här exemplet skickar jag namnet på en specifik kolumn i tabellen.
SELECT count(Fax) FROM Customer; Resultat:
12
I det här fallet, Fax kolumnen har 12 icke-NULL-värden.
Med andra ord innehåller 47 rader ett NULL-värde i Fax kolumn.
Använda en WHERE-klausul
Resultatet av count() beräknas efter någon WHERE klausuler.
SELECT count(Fax)
FROM Customer
WHERE CustomerId <= 5; Resultat:
2
I det här fallet fanns det bara två icke-NULL-värden i Fax kolumn i resultatuppsättningen.
Så här ser resultaten ut med returnerade kolumner (och utan att använda 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 att endast raderna 1 och 5 har icke-NULL-värden i Fax kolumn.
Med en LIMIT-klausul
Resultatet beräknas inte efter någon LIMIT klausul.
SELECT count(Fax)
FROM Customer
LIMIT 5; Resultat:
12
Men du kan göra något så här istället:
SELECT count(Fax)
FROM (SELECT Fax FROM Customer
LIMIT 5); Resultat:
2
Grupperade resultat
Ett praktiskt användningsfall för count() är att använda den i kombination med GROUP BY sats, så att flera rader returneras – var och en representerar en grupp – med ett antal rader i den gruppen.
Här är ett exempel.
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 DISTINKTA sökordet
Du kan lägga till DISTINCT nyckelord för att endast räkna distinkta värden. Du kan med andra ord ta bort dubbletter av värden i beräkningen.
För exempel på detta se Hur man tar bort dubbletter från SQLite Count()-resultat.