English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La cláusula HAVING nos permite filtrar los datos de los grupos después de la agrupación.
La cláusula WHERE establece condiciones en las columnas seleccionadas, mientras que la cláusula HAVING establece condiciones en los grupos creados por la cláusula GROUP BY.
A continuación, se muestra la ubicación de la cláusula HAVING en la consulta SELECT:
SELECT FROM WHERE GROUP BY HAVING ORDER BY
La cláusula HAVING debe colocarse después de la cláusula GROUP BY y antes de la cláusula ORDER BY. A continuación, se muestra la gramática básica de la cláusula HAVING en la consulta SELECT:
SELECT columna1, columna2 FROM tabla1, tabla2 WHERE [condiciones] GROUP BY columna1, columna2 HAVING [ condiciones ] ORDER BY columna1, columna2
Crear la tabla COMPANY (Descargar archivo SQL de COMPANY ),los datos son los siguientes:
w3codeboxdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
El siguiente ejemplo encontrará registros agrupados por el valor del campo NAME y que tienen name(名称) La cuenta del campo es menor que 2 Datos:
SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) < 2;
Se obtuvieron los siguientes resultados:
name ------- Teddy Paul Mark David Allen Kim James (7 rows)
Añadiremos algunos datos a la tabla:
INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00); INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00); INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00);
En este momento, los registros de la tabla COMPANY son los siguientes:
id | name | age | address | salary ----+-------+-----+--------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 9 | James | 44 | Norway | 5000 10 | James | 45 | Texas | 5000 (10 rows)
El siguiente ejemplo encontrará registros agrupados por el valor del campo name y que tienen una cuenta de nombres mayor que 1 Datos:
w3codeboxdb-# SELECT NAME FROM COMPANY GROUP BY name HAVING count(name) > 1;
Se obtuvieron los siguientes resultados:
name ------- Paul James (2 rows)