Résumé :dans ce tutoriel, vous apprendrez à utiliser SQLite HAVING clause pour spécifier une condition de filtre pour un groupe ou un agrégat.
Introduction à SQLite HAVING clause
SQLite HAVING la clause est une clause facultative du SELECT déclaration. Le HAVING clause spécifie une condition de recherche pour un groupe.
Vous utilisez souvent le HAVING clause avec le GROUP BY clause. Le GROUP BY La clause regroupe un ensemble de lignes en un ensemble de lignes ou de groupes récapitulatifs. Puis le HAVING la clause filtre les groupes en fonction d'une condition spécifiée.
Si vous utilisez le HAVING clause, vous devez inclure le GROUP BY clause; sinon, vous obtiendrez l'erreur suivante :
Error: a GROUP BY clause is required before HAVINGCode language: JavaScript (javascript)
Notez que le HAVING la clause est appliquée après GROUP BY clause, alors que la clause WHERE la clause est appliquée avant le GROUP BY clause.
Ce qui suit illustre la syntaxe du HAVING clause :
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)
Dans cette syntaxe, le HAVING la clause évalue la search_condition pour chaque groupe sous la forme d'une expression booléenne. Il n'inclut un groupe dans le jeu de résultats final que si l'évaluation est vraie.
SQLite HAVING exemples de clauses
Nous utiliserons les tracks table dans l'exemple de base de données pour la démonstration.
Pour trouver le nombre de pistes de chaque album, vous utilisez GROUP BY clause comme suit :
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;Code language: SQL (Structured Query Language) (sql) Essayez-le
Pour trouver les numéros de pistes de l'album avec l'id 1, on ajoute un HAVING clause à l'instruction suivante :
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1; Essayez-le
Nous avons fait référence à l'AlbumId colonne dans la colonne HAVING clause.
Pour trouver des albums dont le nombre de pistes est compris entre 18 et 20, vous utilisez la fonction d'agrégation dans le champ HAVING clause comme indiqué dans l'instruction suivante :
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) Essayez-le
SQLite HAVING clause avec INNER JOIN exemple
L'instruction suivante interroge les données de tracks et albums tables utilisant une jointure interne pour rechercher des albums dont la longueur totale est supérieure à 60 000 000 millisecondes.
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) Essayez-le
Dans ce tutoriel, vous avez appris à utiliser SQLite HAVING clause pour spécifier la condition de recherche des groupes.