Oversigt :i denne vejledning lærer du, hvordan du bruger SQLite HAVING klausul for at angive en filterbetingelse for en gruppe eller et aggregat.
Introduktion til SQLite HAVING klausul
SQLite HAVING klausul er en valgfri klausul af SELECT udmelding. HAVING klausul angiver en søgebetingelse for en gruppe.
Du bruger ofte koden HAVING klausul med GROUP BY klausul. GROUP BY klausul grupperer et sæt rækker i et sæt oversigtsrækker eller grupper. Derefter HAVING klausul filtrerer grupper baseret på en specificeret betingelse.
Hvis du bruger HAVING klausul, skal du inkludere GROUP BY klausul; ellers får du følgende fejlmeddelelse:
Error: a GROUP BY clause is required before HAVINGCode language: JavaScript (javascript)
Bemærk, at HAVING klausul anvendes efter GROUP BY klausulen, hvorimod WHERE klausulen anvendes før GROUP BY klausul.
Det følgende illustrerer syntaksen for HAVING klausul:
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)
I denne syntaks er HAVING klausul evaluerer search_condition for hver gruppe som et boolesk udtryk. Den inkluderer kun en gruppe i det endelige resultatsæt, hvis evalueringen er sand.
SQLite HAVING klausuleksempler
Vi vil bruge tracks tabel i eksempeldatabasen til demonstration.
For at finde antallet af numre for hvert album, bruger du GROUP BY klausul som følger:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Prøv det
For at finde antallet af numre for albummet med id 1, tilføjer vi en HAVING klausul til følgende erklæring:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1; Prøv det
Vi har henvist til AlbumId kolonnen i HAVING klausul.
For at finde album, der har antallet af numre mellem 18 og 20, bruger du aggregatfunktionen i HAVING klausul som vist i følgende sætning:
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) Prøv det
SQLite HAVING klausul med INNER JOIN eksempel
Følgende sætning forespørger data fra tracks og albums tabeller, der bruger indre sammenføjning til at finde album, der har en samlet længde på mere end 60.000.000 millisekunder.
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) Prøv det
I denne tutorial har du lært, hvordan du bruger SQLite HAVING klausul for at angive søgebetingelsen for grupper.