Shrnutí :v tomto tutoriálu se naučíte používat SQLite COUNT
funkce pro získání počtu položek ve skupině.
Úvod do SQLite COUNT()
funkce
Funkce COUNT()
je agregační funkce, která vrací počet položek ve skupině.
Můžete například použít COUNT()
Funkce pro získání počtu stop z tracks
tabulka, počet umělců z artists
stůl a tak dále.
Následující text ilustruje základní syntaxi COUNT
funkce:
COUNT([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
Argumenty
COUNT
funkce se chová podle argumentů, které do ní předáte, a volby ALL
nebo DISTINCT
které určíte.
Následující text popisuje význam ALL
a DISTINCT
možnosti:
ALL
:když zadáte vše,COUNT()
funkce počítá všechny nenulové hodnoty včetně duplikátů.COUNT()
funkce používáALL
možnost ve výchozím nastavení, pokud ji přeskočíte.DISTINCT
:pokud explicitně použijeteDISTINCT
možnostCOUNT
funkce počítá pouze jedinečné a nenulové hodnoty.
Výraz může být sloupec nebo výraz, který obsahuje sloupce, ke kterým má funkce COUNT()
je použito.
SQLite poskytuje další syntaxi COUNT()
funkce:
COUNT(*)
Code language: SQL (Structured Query Language) (sql)
COUNT(*)
funkce vrací počet řádků v tabulce, včetně řádků včetně NULL a duplikátů.
SQLite COUNT()
funkční ilustrace
Nejprve vytvořte tabulku s názvem t1
který má jeden sloupec:
CREATE TABLE t1(c INTEGER);
Code language: SQL (Structured Query Language) (sql)
Za druhé vložte pět řádků do t1
tabulka:
INSERT INTO t1(c)
VALUES(1),(2),(3),(null),(3);
Code language: SQL (Structured Query Language) (sql)
Za třetí, dotazujte se na data z t1
tabulka:
SELECT * FROM t1;
Code language: SQL (Structured Query Language) (sql)
Za čtvrté, použijte COUNT(*)
funkce, která vrátí počet řádků v t1
tabulka:
SELECT COUNT(*) FROM t1;
Code language: SQL (Structured Query Language) (sql)
Jak můžete jasně vidět z výstupu, sada výsledků obsahuje NULL a duplicitní řádky.
Za páté, použijte COUNT(expression)
získat počet nenulových hodnot ve sloupci c
:
SELECT COUNT(c) FROM t1;
Code language: SQL (Structured Query Language) (sql)
V tomto příkladu COUNT(c)
vrátí počet hodnot, které nejsou null. Počítá duplicitní řádky jako samostatné řádky.
Za šesté, použijte COUNT(DISTINCT expression)
získat počet jedinečných a nenulových hodnot ve sloupci c
:
SELECT COUNT(DISTINCT c) FROM t1;
Code language: SQL (Structured Query Language) (sql)
SQLite COUNT(*)
příklady
Vezmeme tabulku tracks
ve vzorové databázi, abyste demonstrovali funkčnost COUNT(*)
funkce.
1) SQLite COUNT(*)
příklad
Chcete-li získat počet řádků ze tracks
tabulky, použijete COUNT(*)
fungovat následovně:
SELECT count(*)
FROM tracks;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
count(*)
--------
3503
Code language: plaintext (plaintext)
2) SQLite COUNT(*)
pomocí WHERE
příklad klauzule
Následující příkaz používá COUNT(*)
funkce s WHERE
klauzule k nalezení počtu skladeb, jejichž ID alba je 10:
SELECT COUNT(*)
FROM tracks
WHERE albumid = 10;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
COUNT(*)
--------
14
3) SQLite COUNT(*)
pomocí GROUP BY
příklad klauzule
Chcete-li získat všechna alba a počet skladeb v každém albu, zkombinujte COUNT(*)
pomocí funkce GROUP BY
klauzule:
SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
AlbumId COUNT(*)
------- --------
1 10
2 1
3 3
4 8
5 15
6 13
7 12
8 14
9 8
10 14
...
V tomto příkladu:
- Nejprve
GROUP BY
klauzule seskupit skladby podle ID alba. - Poté
COUNT(*)
Funkce vrací počet stop pro každé album nebo skupinu stop.
4) SQLite COUNT(*)
s HAVING
příklad klauzule
Následující používá COUNT(*)
v HAVING
klauzule k vyhledání alb, která mají více než 25 skladeb:
SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid
HAVING COUNT(*) > 25
Code language: SQL (Structured Query Language) (sql)
Zkuste to
AlbumId COUNT(*)
------- --------
23 34
73 30
141 57
229 26
5) SQLite COUNT(*)
pomocí INNER JOIN
příklad klauzule
Aby byl výstup výše uvedeného dotazu užitečnější, můžete zahrnout sloupec názvu alba. Chcete-li to provést, přidejte INNER JOIN
a ORDER BY
klauzule k dotazu, jako je následující dotaz:
SELECT
tracks.albumid,
title,
COUNT(*)
FROM
tracks
INNER JOIN albums ON
albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING
COUNT(*) > 25
ORDER BY
COUNT(*) DESC;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
AlbumId Title COUNT(*)
------- -------------- --------
141 Greatest Hits 57
23 Minha Historia 34
73 Unplugged 30
229 Lost, Season 3 26
SQLite COUNT(DISTINCT expression)
příklady
Podívejme se na employees
tabulky ze vzorové databáze.
SELECT
employeeid,
lastname,
firstname,
title
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
EmployeeId LastName FirstName Title
---------- -------- --------- -------------------
1 Adams Andrew General Manager
2 Edwards Nancy Sales Manager
3 Peacock Jane Sales Support Agent
4 Park Margaret Sales Support Agent
5 Johnson Steve Sales Support Agent
6 Mitchell Michael IT Manager
7 King Robert IT Staff
8 Callahan Laura IT Staff
Chcete-li získat počet názvů pozic, předejte title
do COUNT()
fungovat následovně:
SELECT COUNT(title)
FROM employees;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
COUNT(title)
------------
8
Chcete-li však získat počet jedinečných titulů, musíte přidat DISTINCT
možnost COUNT()
funkce, jak je znázorněno v následujícím prohlášení:
SELECT COUNT(DISTINCT title)
FROM employees;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
COUNT(DISTINCT title)
---------------------
5
V tomto tutoriálu jsme vám ukázali, jak používat SQLite COUNT()
funkce pro počítání počtu položek ve skupině.