====== having ======
A veces es más útil establecer una condición que se aplique a un grupo en particular. Para expresar este tipo de consultas se utiliza la cláusula group by y dentro del grupo la cláusula having. Por ejemplo
select nombre-sucursal, avg (saldo)
from cuenta
group by nombre-sucursal
having avg (saldo) > 1200
===== having y where juntos =====
Para ilustrar el uso de la cláusula where y la cláusula having dentro de la misma consulta considérese el ejemplo «Obtener el saldo medio de cada cliente que vive en Madrid y tiene como mínimo tres cuentas».
select impositor.nombre-cliente, avg (saldo)
from impositor, cuenta, cliente
where impositor.número-cuenta = cuenta.número-cuenta
and impositor.nombre-cliente = cliente.nombre-cliente
and ciudad-cliente = ‘Madrid’
group by impositor.nombre-cliente
having count (distinct impositor.número-cuenta) >= 3
===== < some, <= some, >= some, = some y <> some =====
Como otro ejemplo «Encontrar la sucursal que tiene el mayor saldo medio». En SQL, las funciones de agregación no se pueden componer.
select nombre-sucursal
from cuenta
group by nombre-sucursal
having avg (saldo) >= all (select avg (saldo)
from cuenta
group by nombre-sucursal)
Así, no está permitido el uso de max (avg (…)).