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