SQLite count()
funkci lze použít k vrácení počtu řádků v sadě výsledků.
Může být také použit k vrácení počtu případů, kdy daný sloupec není NULL v sadě výsledků.
Dá se použít dvěma způsoby. Pokud zadáte hvězdičku (*
) zástupný znak, vrátí celkový počet řádků ve skupině. Pokud zadáte název sloupce, vrátí se, kolikrát tento sloupec není NULL.
Syntaxe
Syntaxe vypadá takto:
count(X)
count(*)
Takže v tomto případě X
může být název sloupce a hvězdička (*
) zástupný znak se používá k určení celkového počtu řádků ve skupině.
Příklad:count(*)
Zde je základní příklad, který demonstruje syntaxi hvězdičky (*), která vrátí počet řádků v tabulce.
SELECT count(*) FROM Customer;
Výsledek:
59
Spustil jsem tento dotaz na vzorové databázi Chinook, a tak se ukázalo, že v Zákazník je 59 řádků tabulka.
Příklad:count(X)
V tomto příkladu předám název konkrétního sloupce tabulky.
SELECT count(Fax) FROM Customer;
Výsledek:
12
V tomto případě Fax sloupec má 12 hodnot jiných než NULL.
Jinými slovy, 47 řádků obsahuje v Faxu hodnotu NULL sloupec.
Použití klauzule WHERE
Výsledek count()
se vypočítá po libovolném WHERE
klauzule.
SELECT count(Fax)
FROM Customer
WHERE CustomerId <= 5;
Výsledek:
2
V tomto případě byly v Faxu pouze dvě hodnoty jiné než NULL sloupec v sadě výsledků.
Takto vypadají výsledky s vrácenými sloupci (a bez použití count()
funkce).
SELECT CustomerId, Fax
FROM Customer
WHERE CustomerId <= 5;
Výsledek:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
Můžeme tedy vidět, že pouze řádky 1 a 5 mají v Faxu hodnoty jiné než NULL sloupec.
Použití klauzule LIMIT
Výsledek se nepočítá po žádném LIMIT
doložka.
SELECT count(Fax)
FROM Customer
LIMIT 5;
Výsledek:
12
Místo toho ale můžete udělat něco takového:
SELECT count(Fax)
FROM (SELECT Fax FROM Customer
LIMIT 5);
Výsledek:
2
Skupinové výsledky
Jeden praktický případ použití pro count()
je použít jej ve spojení s GROUP BY
klauzule, takže se vrátí více řádků – každý z nich představuje skupinu – s počtem řádků v této skupině.
Zde je příklad.
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;
Výsledek:
Name count(al.Title) --------------- --------------- David Coverdale 1 Deep Purple 11 Def Leppard 1 Dennis Chambers 1 Djavan 2 Dread Zeppelin 1
Klíčové slovo DISTINCT
Můžete přidat DISTINCT
klíčové slovo pro počítání pouze odlišných hodnot. Jinými slovy, ve výpočtu můžete odstranit duplicitní hodnoty.
Příklady toho viz Jak odstranit duplikáty z výsledků SQLite Count().