SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite ayant

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.