Tabla de Contenidos

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 (…)).