los TENIENDO Cláusula le permite especificar condiciones que filtran qué resultados de grupo aparecen en los resultados.
La cláusula WHERE coloca condiciones en las columnas seleccionadas, mientras que la cláusula HAVING coloca condiciones en los grupos creados por la cláusula GROUP BY.
Sintaxis
El siguiente bloque de código muestra la posición de la cláusula HAVING en una consulta.
SELECT FROM WHERE GROUP BY HAVING ORDER BY
La cláusula HAVING debe seguir a la cláusula GROUP BY en una consulta y también debe preceder a la cláusula ORDER BY si se utiliza. El siguiente bloque de código tiene la sintaxis de la instrucción SELECT, incluida la cláusula HAVING:
SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2
Ejemplo
Considere que la tabla CLIENTES tiene los siguientes registros.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
A continuación se muestra un ejemplo, que mostraría un registro para un recuento de edad similar que sería mayor o igual a 2.
SQL > SELECT ID, NAME, AGE, ADDRESS, SALARY FROM CUSTOMERS GROUP BY age HAVING COUNT(age) >= 2;
Esto produciría el siguiente resultado:
+----+--------+-----+---------+---------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+--------+-----+---------+---------+ | 2 | Khilan | 25 | Delhi | 1500.00 | +----+--------+-----+---------+---------+