Enunciado HAVING de SQL

Cláusula HAVING

La razón por la que se agrega la cláusula HAVING en SQL es que la palabra clave WHERE no se puede usar con funciones de agregación.

Sintaxis de 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

Ejemplo de SQL HAVING

Tenemos la siguiente tabla "Orders":

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

Ahora, queremos encontrar clientes cuyos montos totales de pedidos sean inferiores a 2000.

Usamos la siguiente sentencia SQL:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

Los resultados de la consulta son similares:

Customer SUM(OrderPrice)
Carter 1700

Ahora queremos encontrar que el cliente "Bush" o "Adams" tenga un monto total de pedidos superior a 1500.

Añadimos una cláusula WHERE común en la sentencia SQL:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

Resultados de la consulta:

Customer SUM(OrderPrice)
Bush 2000
Adams 2000