Latest web development tutorials

cláusula HAVING SQL

cláusula HAVING

Aumento de la cláusula HAVING SQL porque, DONDE palabra clave no se puede utilizar con las funciones de agregado.

cláusula HAVING nos permite filtrar después de cada serie de paquetes de datos.

Sintaxis SQL HAVING

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 datos de demostración

En este tutorial, vamos a utilizar la base de datos de ejemplo w3big.

La siguiente es una selección "Sitios Web" datos de la tabla:

+----+--------------+---------------------------+-------+---------+
| 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     |
+----+---------------+---------------------------+-------+---------+

Aquí está la tabla de datos de registro de acceso web "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)


Ejemplos de tener SQL

Ahora queremos encontrar el número total de visitas es mayor de 200 sitios.

Nosotros usamos la siguiente instrucción SQL:

Ejemplos

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;

Ejecutar el SQL encima de los resultados de salida son los siguientes:

Ahora queremos encontrar el número total de visitas es mayor de 200 sitios, y menos de 200 Ranking Alexa.

Añadimos una declaración ordinaria cláusula WHERE de SQL:

Ejemplos

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;

Ejecutar el SQL encima de los resultados de salida son los siguientes: