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 HAVINGCode 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.