MySQL HAVING
La clause HAVING est utilisée dans l’instruction SELECT pour spécifier des conditions de filtre pour un groupe de lignes ou d’agrégats.
La clause HAVING est souvent utilisée avec la clause GROUP BY pour filtrer des groupes en fonction d’une condition spécifiée. Si la clause GROUP BY est négligé, la clause HAVING se comporte comme la clause WHERE.
Voici la syntaxe de la clause HAVING:
SELECT colonne1, colonne2, ... FROM tableName WHERE condition GROUP BY colonneX HAVING condition ORDER BY colonneX;
MySQL évalue la clause HAVING après les clauses SELECT, FROM, WHERE, et GROUP BY et avant les clauses ORDER BY et LIMIT.
Prenons quelques exemples d’utilisation de la clause HAVING pour voir comment elle fonctionne. Pour cela nous allons utiliser la table « stock ».
Exemple – Utilisation de la fonction SUM
Regardons un exemple de la clause HAVING qui utilise la fonction SUM.
Vous pouvez également utiliser la fonction SUM pour renvoyer le nom du produit et la quantité totale (pour ce produit). La clause HAVING filtrera les résultats afin que seuls les produits dont la quantité totale soit supérieure à 5 soient renvoyés.
SELECT produit, SUM(qte) AS "Quantité totale" FROM stock GROUP BY produit HAVING SUM(qte) > 5;
Exemple – Utilisation de la fonction MIN
Regardons maintenant comment utiliser la clause HAVING avec la fonction MIN dans MySQL.
Vous pouvez également utiliser la fonction MIN pour renvoyer le nom de chaque produit et la quantité minimum dans le stock. La clause HAVING renverra uniquement les produits où la quantité minimum est inférieur à 5.
SELECT produit, MIN(qte) AS "Quantité la plus base" FROM stock GROUP BY produit HAVING MIN(qte) < 5;
Exemple – Utilisation de la fonction MAX
Regardons maintenant comment utiliser la clause HAVING avec la fonction MAX dans MySQL.
Vous pouvez également utiliser la fonction MAX pour renvoyer le nom de chaque produit et la quantité maximum dans le stock. La clause MySQL HAVING renverra uniquement les produits où la quantité maximum est inférieur à 5.
SELECT produit, MAX(qte) AS "Quantité MAX" FROM stock GROUP BY produit HAVING MAX(qte) > 5;
Exemple – Utilisation de la fonction COUNT
Regardons comment utiliser la clause HAVING avec la fonction COUNT dans MySQL.
Vous pouvez utiliser la fonction COUNT pour renvoyer le nom du produit et le nombre de commandes (pour ce produit) qui se trouvent dans la catégorie « Ordinateur ». La clause HAVING va filtrer les résultats afin que seuls les produits avec plus de 5 commandes soient retournés.
SELECT produit, COUNT(*) AS "Nombre de commandes" FROM stock WHERE categorie = 'ordinateur' GROUP BY produit HAVING COUNT(*) > 5;
je vous remercie vraiment