SQL HAVINGClauses
Clause HAVING
La raison d'ajouter la clause HAVING en SQL est que le mot-clé WHERE ne peut pas être utilisé avec les fonctions d'agrégation.
La clause HAVING nous permet de filtrer les données groupées après le regroupement.
Syntaxe de HAVING en SQL
Syntaxe de HAVING en SQL
Description du paramètre :
column1: La colonne à récupérer.aggregate_function(column2): Une fonction d'agrégation, telle que SUM, COUNT, AVG, etc., appliquée àcolumn2la valeur de.table_name: La table à partir de laquelle récupérer les données.GROUP BY column1: Seloncolumn1Regrouper les données en fonction des valeurs de la colonne.HAVING condition: Une condition utilisée pour filtrer les résultats groupés. Seuls les groupes qui satisfont à la condition seront inclus dans l'ensemble de résultats.
Base de données de démonstration
Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.
Voici les données sélectionnées dans la table "Websites" :
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Voici les données de la table de journal d'accès du site "access_log" :
mysql> SELECT * FROM access_log; +-----+---------+-------+------------+ | aid | site_id | count | date | +-----+---------+-------+------------+ | 1 | 1 | 45 | 2016-05-10 | | 2 | 3 | 100 | 2016-05-13 | | 3 | 1 | 230 | 2016-05-14 | | 4 | 2 | 10 | 2016-05-14 | | 5 | 5 | 205 | 2016-05-14 | | 6 | 4 | 13 | 2016-05-15 | | 7 | 3 | 220 | 2016-05-15 | | 8 | 5 | 545 | 2016-05-16 | | 9 | 3 | 201 | 2016-05-17 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Exemple de HAVING en SQL
Nous voulons maintenant trouver des sites web avec un nombre total de visites supérieur à 200.
Nous utilisons l'instruction SQL suivante :
Exemple
L'exécution du SQL ci-dessus produit la sortie suivante :
Nous voulons maintenant trouver des sites web avec un nombre total de visites supérieur à 200 et un classement Alexa inférieur à 200.
Nous ajoutons une clause WHERE ordinaire à l'instruction SQL :
Exemple
L'exécution du SQL ci-dessus produit la sortie suivante :