Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite HAVING
klauzula określająca warunek filtrowania dla grupy lub agregatu.
Wprowadzenie do SQLite HAVING
klauzula
SQLite HAVING
klauzula jest opcjonalną klauzulą SELECT
oświadczenie. HAVING
klauzula określa warunek wyszukiwania dla grupy.
Często używasz HAVING
klauzula z GROUP BY
klauzula. GROUP BY
klauzula grupuje zestaw wierszy w zestaw wierszy lub grup podsumowań. Następnie HAVING
klauzula filtruje grupy na podstawie określonego warunku.
Jeśli używasz HAVING
klauzula, musisz dołączyć GROUP BY
klauzula; w przeciwnym razie otrzymasz następujący błąd:
Error: a GROUP BY clause is required before HAVING
Code language: JavaScript (javascript)
Zauważ, że HAVING
klauzula jest stosowana po GROUP BY
klauzula, natomiast WHERE
klauzula jest stosowana przed GROUP BY
klauzula.
Poniższe ilustruje składnię HAVING
klauzula:
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)
W tej składni HAVING
klauzula ocenia search_condition
dla każdej grupy jako wyrażenie logiczne. Uwzględnia grupę w końcowym zestawie wyników tylko wtedy, gdy ocena jest prawdziwa.
SQLite HAVING
przykłady klauzul
Użyjemy tracks
tabeli w przykładowej bazie danych do demonstracji.
Aby znaleźć liczbę utworów dla każdego albumu, użyj GROUP BY
klauzula w następujący sposób:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Wypróbuj
Aby znaleźć numery utworów dla albumu o identyfikatorze 1, dodajemy HAVING
klauzula do następującego oświadczenia:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Wypróbuj
Wspominaliśmy AlbumId
kolumna w HAVING
klauzula.
Aby znaleźć albumy, które mają liczbę utworów od 18 do 20, użyj funkcji agregacji w HAVING
klauzula, jak pokazano w następującym oświadczeniu:
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)
Wypróbuj
SQLite HAVING
klauzula z INNER JOIN
przykład
Poniższa instrukcja wysyła zapytanie o dane z tracks
i albums
tabele używające sprzężenia wewnętrznego w celu znalezienia albumów o łącznej długości większej niż 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)
Wypróbuj
W tym samouczku nauczyłeś się korzystać z SQLite HAVING
klauzula określająca warunek wyszukiwania dla grup.