Shrnutí :v tomto tutoriálu se naučíte používat SQLite GROUP BY klauzule k vytvoření sady souhrnných řádků ze sady řádků.
Úvod do SQLite GROUP BY klauzule
GROUP BY klauzule je volitelná klauzule SELECT prohlášení. GROUP BY klauzule vybrané skupiny řádků do souhrnných řádků podle hodnot jednoho nebo více sloupců.
GROUP BY klauzule vrací jeden řádek pro každou skupinu. Pro každou skupinu můžete použít agregační funkci, například MIN , MAX , SUM , COUNT nebo AVG poskytnout více informací o každé skupině.
Následující příkaz ilustruje syntaxi SQLite GROUP BY doložka.
SELECT
column_1,
aggregate_function(column_2)
FROM
table
GROUP BY
column_1,
column_2;
Code language: SQL (Structured Query Language) (sql) Zkuste to
GROUP BY klauzule následuje za FROM klauzule SELECT prohlášení. V případě, že příkaz obsahuje WHERE klauzule GROUP BY klauzule musí následovat za WHERE doložka.
Po GROUP BY klauzule je sloupec nebo seznam sloupců oddělených čárkami používaných k určení skupiny.
SQLite GROUP BY příklady
Používáme tracks tabulky ze vzorové databáze pro ukázku.
SQLite GROUP BY klauzule s COUNT funkce
Následující příkaz vrátí ID alba a počet skladeb na album. Používá GROUP BY klauzule seskupí skladby podle alba a použije COUNT() funkce pro každou skupinu.
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Zkuste to
Můžete použít ORDER BY klauzule k řazení skupin následovně:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
ORDER BY COUNT(trackid) DESC;Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite GROUP BY a INNER JOIN klauzule
Pomocí INNER JOIN můžete dotazovat data z více tabulek klauzuli, pak použijte GROUP BY klauzule k seskupení řádků do sady souhrnných řádků.
Například následující příkaz spojuje tracks tabulka s albums tabulku pro získání názvů alb a používá GROUP BY klauzule s COUNT funkce pro získání počtu skladeb na album.

SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite GROUP BY s HAVING klauzule
Chcete-li filtrovat skupiny, použijte GROUP BY s HAVING doložka. Chcete-li například získat alba, která mají více než 15 skladeb, použijte následující příkaz:
SELECT
tracks.albumid,
title,
COUNT(trackid)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING COUNT(trackid) > 15;Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite GROUP BY klauzule s SUM příklad funkce
Můžete použít SUM funkce pro výpočet součtu za skupinu. Chcete-li například získat celkovou délku a bajty pro každé album, použijte SUM funkce pro výpočet celkových milisekund a bajtů.
SELECT
albumid,
SUM(milliseconds) length,
SUM(bytes) size
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite GROUP BY s MAX , MIN a AVG funkce
Následující příkaz vrací ID alba, název alba, maximální délku, minimální délku a průměrnou délku skladeb v tracks tabulka.
SELECT
tracks.albumid,
title,
min(milliseconds),
max(milliseconds),
round(avg(milliseconds),2)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid;Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite GROUP BY příklad více sloupců
V předchozím příkladu jsme použili jeden sloupec v GROUP BY doložka. SQLite umožňuje seskupovat řádky do více sloupců.
Například pro seskupení skladeb podle typu média a žánru použijte následující příkaz:
SELECT
MediaTypeId,
GenreId,
COUNT(TrackId)
FROM
tracks
GROUP BY
MediaTypeId,
GenreId;Code language: SQL (Structured Query Language) (sql) Zkuste to
SQLite používá kombinaci hodnot MediaTypeId a GenreId sloupce jako skupinu, např. (1,1) a (1,2). Poté použije COUNT funkce pro vrácení počtu stop v každé skupině.
SQLite GROUP BY příklad data
Podívejte se na následující tabulku faktur ze vzorové databáze:
Následující výpis vrátí číslo faktury podle let.
SELECT
STRFTIME('%Y', InvoiceDate) InvoiceYear,
COUNT(InvoiceId) InvoiceCount
FROM
invoices
GROUP BY
STRFTIME('%Y', InvoiceDate)
ORDER BY
InvoiceYear;Code language: SQL (Structured Query Language) (sql) Zde je výstup:
V tomto příkladu:
- Funkce
STRFTIME('%Y', InvoiceDate)vrátí rok z řetězce data. GROUP BYdoložka seskupuje faktury podle let.- Funkce
COUNT()vrátí číslo faktury v každém roce (nebo skupině).
V tomto tutoriálu jste se naučili používat SQLite GROUP BY klauzule k seskupení řádků do sady souhrnných řádků.