Shrnutí :v tomto tutoriálu se naučíte používat SQLite HAVING
klauzule k určení podmínky filtru pro skupinu nebo agregaci.
Úvod do SQLite HAVING
klauzule
SQLite HAVING
klauzule je volitelná klauzule SELECT
prohlášení. HAVING
klauzule určuje podmínku hledání pro skupinu.
Často používáte HAVING
klauzule s GROUP BY
doložka. GROUP BY
klauzule seskupuje sadu řádků do sady souhrnných řádků nebo skupin. Poté HAVING
klauzule filtruje skupiny na základě zadané podmínky.
Pokud použijete HAVING
klauzule, musíte zahrnout GROUP BY
doložka; jinak se zobrazí následující chyba:
Error: a GROUP BY clause is required before HAVING
Code language: JavaScript (javascript)
Všimněte si, že HAVING
klauzule se použije po GROUP BY
klauzule, zatímco WHERE
klauzule je použita před GROUP BY
doložka.
Následující text ilustruje syntaxi HAVING
klauzule:
SELECT
column_1,
column_2,
aggregate_function (column_3)
FROM
table
GROUP BY
column_1,
column_2
HAVING
search_condition;
Code language: SQL (Structured Query Language) (sql)
V této syntaxi HAVING
klauzule vyhodnocuje search_condition
pro každou skupinu jako booleovský výraz. Zahrnuje skupinu do konečné sady výsledků pouze v případě, že je hodnocení pravdivé.
SQLite HAVING
příklady vět
Použijeme tracks
tabulka ve vzorové databázi pro demonstraci.
Chcete-li zjistit počet skladeb pro každé album, použijte GROUP BY
doložka takto:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
Abychom našli čísla skladeb pro album s ID 1, přidáme HAVING
doložka k následujícímu prohlášení:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Zkuste to
Odkazovali jsme na AlbumId
ve sloupci HAVING
doložka.
Chcete-li najít alba, která mají počet skladeb mezi 18 a 20, použijte agregační funkci v HAVING
klauzule, jak je uvedeno v následujícím prohlášení:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING
COUNT(albumid) BETWEEN 18 AND 20
ORDER BY albumid;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
SQLite HAVING
klauzule s INNER JOIN
příklad
Následující příkaz se dotazuje na data ze tracks
a albums
tabulky pomocí vnitřního spojení k nalezení alb, která mají celkovou délku větší než 60 000 000 milisekund.
SELECT
tracks.AlbumId,
title,
SUM(Milliseconds) AS length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.AlbumId
GROUP BY
tracks.AlbumId
HAVING
length > 60000000;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
V tomto tutoriálu jste se naučili používat SQLite HAVING
klauzule k určení podmínky vyhledávání pro skupiny.