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