Sammanfattning :i den här handledningen kommer du att lära dig hur du använder SQLite HAVING
sats för att ange ett filtervillkor för en grupp eller ett aggregat.
Introduktion till SQLite HAVING
klausul
SQLite HAVING
sats är en valfri sats i SELECT
påstående. HAVING
sats anger ett sökvillkor för en grupp.
Du använder ofta HAVING
sats med GROUP BY
klausul. GROUP BY
klausul grupperar en uppsättning rader till en uppsättning sammanfattningsrader eller grupper. Sedan HAVING
klausul filtrerar grupper baserat på ett specificerat villkor.
Om du använder HAVING
sats måste du inkludera GROUP BY
klausul; annars får du följande felmeddelande:
Error: a GROUP BY clause is required before HAVING
Code language: JavaScript (javascript)
Observera att HAVING
sats tillämpas efter GROUP BY
satsen, medan WHERE
satsen tillämpas före GROUP BY
klausul.
Följande illustrerar syntaxen för 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 den här syntaxen är HAVING
satsen utvärderar search_condition
för varje grupp som ett booleskt uttryck. Den inkluderar bara en grupp i den slutliga resultatuppsättningen om utvärderingen är sann.
SQLite HAVING
klausulexempel
Vi kommer att använda tracks
tabell i exempeldatabasen för demonstration.
För att hitta antalet spår för varje album använder du GROUP BY
klausul enligt följande:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Prova det
För att hitta antalet spår för albumet med id 1 lägger vi till en HAVING
klausul till följande uttalande:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Prova det
Vi har hänvisat till AlbumId
kolumnen i HAVING
klausul.
För att hitta album som har antalet spår mellan 18 och 20 använder du aggregatfunktionen i HAVING
klausul som visas i följande uttalande:
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)
Prova det
SQLite HAVING
klausul med INNER JOIN
exempel
Följande sats frågar efter data från tracks
och albums
tabeller som använder inre koppling för att hitta album som har en total längd som är större än 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)
Prova det
I den här handledningen har du lärt dig hur du använder SQLite HAVING
sats för att ange sökvillkoret för grupper.