SQL HAVINGCláusulas
Cláusula HAVING
La razón para agregar la cláusula HAVING en SQL es que la palabra clave WHERE no se puede usar con funciones agregadas.
La cláusula HAVING nos permite filtrar los datos de cada grupo después de agrupar.
Sintaxis de SQL HAVING
Sintaxis de SQL HAVING
Descripción de parámetros:
column1: la columna a recuperar.aggregate_function(column2): una función agregada, como SUM, COUNT, AVG, etc., aplicada acolumn2el valor de.table_name: la tabla de la que se recuperan los datos.GROUP BY column1: segúncolumn1los valores de la columna se agrupan los datos.HAVING condition: una condición para filtrar los resultados agrupados. Solo los grupos que cumplan la condición se incluirán en el conjunto de resultados.
Base de datos de demostración
En este tutorial, usaremos la base de datos de muestra EJEMPLO.
A continuación se muestran los datos de la tabla "Websites":
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Ejemplo | 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 | +----+---------------+---------------------------+-------+---------+
A continuación se muestran los datos de la tabla de registros de acceso al sitio 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)
Ejemplo de SQL HAVING
Ahora queremos encontrar los sitios web con un total de visitas mayor que 200.
Usamos la siguiente sentencia SQL:
Ejemplo
Al ejecutar el SQL anterior, el resultado es el siguiente:
Ahora queremos encontrar los sitios web con un total de visitas mayor que 200 y un ranking de Alexa menor que 200.
Agregamos una cláusula WHERE normal a la sentencia SQL:
Ejemplo
Al ejecutar el SQL anterior, el resultado es el siguiente: