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