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 HAVING
Code 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.