Samenvatting :in deze tutorial leer je hoe je SQLite gebruikt HAVING clausule om een filtervoorwaarde voor een groep of een aggregaat op te geven.
Inleiding tot SQLite HAVING clausule
SQLite HAVING clausule is een optionele clausule van de SELECT uitspraak. De HAVING clausule specificeert een zoekvoorwaarde voor een groep.
Je gebruikt vaak de HAVING clausule met de GROUP BY clausule. De GROUP BY clausule groepeert een set rijen in een set samenvattende rijen of groepen. Dan de HAVING clausule filtert groepen op basis van een opgegeven voorwaarde.
Als u de HAVING . gebruikt clausule, moet u de GROUP BY clausule; anders krijgt u de volgende foutmelding:
Error: a GROUP BY clause is required before HAVINGCode language: JavaScript (javascript)
Merk op dat de HAVING clausule wordt toegepast na GROUP BY clausule, terwijl de WHERE clausule wordt toegepast vóór de GROUP BY clausule.
Het volgende illustreert de syntaxis van de HAVING clausule:
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)
In deze syntaxis is de HAVING clausule evalueert de search_condition voor elke groep als een Booleaanse uitdrukking. Het bevat alleen een groep in de uiteindelijke resultatenset als de evaluatie waar is.
SQLite HAVING clausule voorbeelden
We gebruiken de tracks tabel in de voorbeelddatabase voor demonstratie.
Om het aantal nummers voor elk album te vinden, gebruik je GROUP BY clausule als volgt:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Probeer het
Om het aantal nummers voor het album met id 1 te vinden, voegen we een HAVING . toe clausule naar de volgende verklaring:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1; Probeer het
We hebben verwezen naar de AlbumId kolom in de HAVING clausule.
Om albums te vinden met een aantal nummers tussen 18 en 20, gebruikt u de aggregatiefunctie in de HAVING clausule zoals weergegeven in de volgende verklaring:
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) Probeer het
SQLite HAVING clausule met INNER JOIN voorbeeld
De volgende instructie vraagt om gegevens van tracks en albums tabellen die inner join gebruiken om albums te vinden met een totale lengte van meer dan 60.000.000 milliseconden.
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) Probeer het
In deze tutorial heb je geleerd hoe je SQLite HAVING . gebruikt clausule om de zoekvoorwaarde voor groepen te specificeren.