Comment utiliser la clause MySQL HAVING lorsque la somme est supérieure au seuil

Comment Utiliser La Clause Mysql Having Lorsque La Somme Est Superieure Au Seuil



Lorsque vous travaillez avec une base de données MySQL, vous aurez souvent des instances où vous souhaitez filtrer les valeurs. Bien que vous puissiez utiliser la clause WHERE, cela ne fonctionne pas toujours pour toutes les instances. La clause HAVING est utilisée lorsque vous souhaitez exécuter une requête de filtrage à l'aide d'une fonction d'agrégation et appliquer les regroupements.

La clause HAVING s'appuie sur la clause GROUP BY dans son filtre et exécute la requête en fonction de la condition fournie. Il limite le filtre en fonction de la condition et ne renvoie les groupes sélectionnés que s'ils remplissent la condition. Nous avons des exemples d'utilisation de la clause MySQL HAVING où la somme dépasse le seuil. De cette façon, vous maîtriserez son utilisation à la fin de l'article d'aujourd'hui.







Comment utiliser la clause MySQL HAVING lorsque la somme est supérieure au seuil

Vous appliquez la clause MySQL HAVING avec la clause GROUP BY. Sa syntaxe est la suivante :



SELECT expression1, .. expression_n, fonction_agrégation (expression) FROM nom_table GROUP BY expression HAVING  ;

Vous pouvez utiliser les différentes fonctions d'agrégation, notamment SUM(), COUNT(), MIN(), MAX() et AVG(). Notez que toute expression qui n'est pas utilisée avec la fonction d'agrégation doit être mentionnée avec la clause GROUP BY.



Quant à la condition, elle est appliquée aux résultats agrégés où vous spécifiez le seuil que vous souhaitez vérifier avec la condition. Par exemple, vous pouvez appliquer la fonction SUM() et vérifier si l'expression atteint un seuil de 10. Nous en comprendrons plus dans les exemples fournis.





Pour comprendre le fonctionnement de la clause HAVING, créons un exemple de base de données avec lequel nous travaillerons. Nous nommons notre base de données « registre ».



Créons également une table nommée 'workers' pour contenir nos différentes colonnes et types de données. Ici, nous travaillons avec les données des travailleurs telles que le nom, les heures, la date de travail, etc.

En vérifiant la description de notre table, nous pouvons confirmer que toutes les colonnes sont créées avec succès.

Nous insérons les valeurs dans notre tableau. Nous avons différents travailleurs qui travaillent à des heures et des jours différents. En utilisant ces données, nous pouvons appliquer la clause HAVING lorsque la somme dépasse le seuil.

Pour notre premier exemple, considérons un cas où nous voulons trouver les travailleurs qui ont travaillé le plus d'heures. Pour la clause HAVING, incluez la fonction d'agrégation de somme pour les heures. Dans la clause GROUP BY, nous regroupons les lignes à l'aide de la ligne de nom pour aider à classer les travailleurs dont le nombre total d'heures est supérieur au seuil.

Si nous avons notre seuil pour le nombre total d'heures à 7, nous exécutons notre commande comme suit :

SELECT name, SUM(hours) AS total_hours_per_person FROM workers GROUP BY name HAVING sum(hours) > 7;

En exécutant la commande, nous obtenons une sortie contenant deux lignes puisque seuls deux travailleurs ont dépassé le seuil spécifié dans la clause HAVING.

Supposons que nous voulions classer les départements pour voir ceux dont les travailleurs travaillent en heures supérieures à un seuil de 7 heures. Nous sélectionnons le service, puis utilisons la fonction d'agrégation SUM avec les heures et regroupons les lignes à l'aide de l'expression de service.

Notre commande est la suivante :

SELECT département, SUM(hours) AS total_hours_per_department FROM workers GROUP BY département HAVING sum(hours) > 7;

D'après les résultats, nous pouvons vérifier que nous avons réussi à filtrer les lignes pour ne laisser que celles dont la somme de leurs heures est supérieure à notre seuil.

De même, si nous voulons filtrer la date de travail avec le plus grand nombre de travailleurs actifs pour dépasser un seuil de 10 heures, nous sélectionnons l'expression de date de travail. Ensuite, nous utilisons la fonction SOMME avec les heures et regroupons les lignes en utilisant la date de travail.

La commande est la suivante :

SELECT workdate, SUM(hours) AS most_hours_worked FROM workers GROUP BY workdate HAVING sum(hours) > 10;

Après l'exécution de la commande, les résultats montrent qu'une seule date de travail a sa somme d'heures totales qui dépassent le seuil :

Conclusion

La clause MySQL HAVING est utilisée lorsque vous souhaitez exécuter une requête de filtrage à l'aide d'une fonction d'agrégation. Il est combiné avec la clause GROUP BY pour exécuter une requête plus spécifique. Cet article détaille tout sur la clause MySQL HAVING où la somme est supérieure au seuil. Avec les exemples fournis, vous comprenez maintenant comment utiliser la clause MySQL HAVING.