Maison > base de données > tutoriel mysql > le corps du texte

regroupement de données mysql : regroupement de filtres

巴扎黑
Libérer: 2017-05-09 13:48:02
original
2272 Les gens l'ont consulté

Regroupement de filtres mysql

En plus de regrouper les données par groupe, MySQL permet également de filtrer les groupes, en stipulant quels groupes sont inclus et quels groupes sont exclus. Par exemple, vous souhaiterez peut-être répertorier tous les clients qui ont au moins deux commandes. Pour obtenir ces données, le filtrage doit être effectué sur la base de groupes complets plutôt que d'individus.

Nous avons vu le rôle de la clause Where. Cependant, l'option Where n'accomplit pas la tâche dans cet exemple car le filtre Where spécifie des lignes plutôt que des groupes. En fait, où n’a aucune notion de regroupement.

Alors, quoi utiliser au lieu de où ? MySQL fournit une autre clause à cet effet, qui est la clause have. avoir est très similaire à où. En fait, tous les types de clauses Where que vous avez appris jusqu'à présent peuvent être remplacés par Have. La seule différence réside dans l'endroit où les lignes sont filtrées, tout en ayant des groupes de filtres.

Remarque  : avoir des supports partout où les opérateurs.

Alors, comment filtrer les groupes ? Veuillez regarder l'exemple suivant :

Entrée :

select cust_id,count(*) as orders from orders group by cust_id having count(*) >= 2;
Copier après la connexion

Sortie :

regroupement de données mysql : regroupement de filtres

Analyse : Cette instruction de sélection Le les 3 premières lignes sont similaires aux déclarations ci-dessus. La dernière ligne ajoute une clause have, qui filtre les groupes avec count(*>)>=2 (plus de deux commandes).

Comme vous pouvez le voir, ici la clause Where ne fonctionne pas car le filtrage est basé sur la valeur globale groupée et non sur la valeur de ligne spécifique.

La différence entre avoir et où : Voici une autre façon de comprendre où les filtres avant le regroupement des données et avoir des filtres après le regroupement des données. Il s'agit d'une distinction importante, les lignes exclues par où ne sont pas incluses dans le regroupement. Cela peut modifier les valeurs calculées, affectant ainsi les regroupements de la clause have qui sont filtrés en fonction de ces valeurs.

Alors, est-il nécessaire d'utiliser à la fois les clauses Where et Have dans une seule instruction ? En fait, il y en a. Supposons que vous souhaitiez filtrer davantage la déclaration ci-dessus afin qu'elle renvoie plus de deux clients au cours des 12 derniers mois. Pour y parvenir, vous pouvez ajouter une clause Where pour filtrer les commandes passées dans les 12 mois. Ajoutez ensuite la clause have pour filtrer les groupes avec plus de deux commandes.

Pour une meilleure compréhension, veuillez consulter l'exemple ci-dessous, qui répertorie les fournisseurs de produits avec 2 (inclus) ou plus et un prix de 10 (inclus) ou plus :

Entrez :

select vend_id,count(*) as num_prods from products where prod_price >= 10 group by vend_id having count(*) >=2;
Copier après la connexion

Sortie :

regroupement de données mysql : regroupement de filtres

Analyse : Dans cette instruction, la première ligne est le SELECT de base utilisant une fonction d'agrégation, qui est différente de la précédente Les exemples ci-dessus sont très similaires. La clause WHERE filtre toutes les lignes où prod_price est au moins 10. Les données sont ensuite regroupées par vend_id et la clause HAVING filtre les regroupements avec un nombre de 2 ou plus.

S'il n'y a pas de clause WHERE, deux lignes supplémentaires seront récupérées (fournisseur 1002, tous les produits vendus ont un prix inférieur à 10 ; fournisseur 1001, vend 3 produits, mais il n'y a qu'un seul produit dont le prix est supérieur à ou égal à 10) :

Entrée : sélectionnez vend_id,count(*) comme num_prods du groupe de produits par vend_id ayant count(*) >= 2;

Sortie :

regroupement de données mysql : regroupement de filtres

[Recommandations associées]

  1. regroupement et tri des données MySQL et Ordre des clauses SELECT

  2. regroupement de données MySQL : créer un regroupement

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!