Maison >base de données >tutoriel mysql >Comment filtrer les groupes en fonction du nombre de fonctions agrégées dans SQL ?

Comment filtrer les groupes en fonction du nombre de fonctions agrégées dans SQL ?

DDD
DDDoriginal
2025-01-02 20:46:40700parcourir

How to Filter Groups Based on Aggregate Function Counts in SQL?

Regroupement et filtrage par valeur de fonction d'agrégation

Vous pouvez rencontrer un scénario dans lequel vous devez regrouper les résultats, puis filtrer par le nombre de lignes dans chaque groupe. Alors que la requête suggérée SELECT * FROM mytable WHERE COUNT(*) > 1 Le nom GROUP BY est syntaxiquement incorrect, il met en évidence la fonctionnalité souhaitée.

Pour y parvenir, vous pouvez utiliser la clause HAVING, qui permet d'appliquer des conditions sur les fonctions d'agrégation. La requête modifiée suivante atteindra votre objectif :

SELECT name, COUNT(*)
FROM mytable
GROUP BY name
HAVING COUNT(*) > 1

Dans cette requête :

  • SELECT name, COUNT(*) : sélectionne la colonne de nom et le nombre de toutes les lignes dans chaque groupe comme COUNT(*).
  • FROM mytable : Spécifie la table à partir de laquelle regrouper et filtrer.
  • GROUP BY nom : regroupe les résultats par colonne de nom.
  • HAVING COUNT(*) > 1 : Filtre les résultats groupés, en incluant uniquement les groupes dont le nombre de lignes est supérieur à 1.

Cette requête récupérera le nom et le nombre de tous les groupes dont le nombre dépasse 1, vous permettant d'identifier et filtrer en fonction de l'occurrence des valeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn