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