Latest web development tutorials

SQL clause HAVING

clause HAVING

Augmentation de SQL clause HAVING parce que, mot-clé WHERE ne peut pas être utilisé avec des fonctions d'agrégation.

HAVING nous permet de filtrer après chaque série de paquets de données.

SQL PRESENTANT Syntaxe

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;


La base de données de démonstration

Dans ce tutoriel, nous allons utiliser la base de données de l'échantillon w3big.

Ce qui suit est un «Sites Web» sélectionnés de données de la table:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 本教程      | http://www.w3big.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 "access_log" table d'enregistrement d'accès du site:

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)


Des exemples de SQL PRESENTANT

Maintenant, nous voulons trouver le nombre total de visites est supérieure à 200 sites.

Nous utilisons l'instruction SQL suivante:

Exemples

SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

Exécutez le SQL ci-dessus des résultats de sortie sont les suivantes:

Maintenant, nous voulons trouver le nombre total de visites est supérieure à 200 sites, et à moins de 200 alexa rank.

Nous ajoutons une déclaration ordinaire SQL clause WHERE:

Exemples

SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

Exécutez le SQL ci-dessus des résultats de sortie sont les suivantes: