Unidad 5. Consultas de resumen (VII)


5.15. Selección sobre grupos de filas, la cláusula HAVING

Cuando queremos incluir una cláusula de selección sobre las filas del origen, utilizamos la cláusula WHERE, pero cuando estamos definiendo una consulta de resumen, no podemos utilizar esta cláusula para seleccionar filas del resultado ya que cada una de éstas representa un grupo de filas de la tabla original. Para seleccionar filas del resumen tenemos la cláusula HAVING.


HAVING condición de búsqueda 

HAVING funciona igual que la cláusula WHERE pero en vez de actuar sobre las filas del origen de datos, actúa sobre las filas del resultado, selecciona grupos de filas por lo que la condición de búsqueda sufrirá alguna limitación, la misma que para la lista de selección:
Ejemplo:


SELECT oficina, count(numemp) AS  [Número de empleados]

FROM empleados

GROUP BY oficina

HAVING COUNT(numemp)<2;

Resultado:

oficina Número de empleados
13 1
22 1

Esta SELECT es la misma que la del primer ejemplo del apartado sobre la cláusula GROUP BY, la diferencia es que le hemos añadido la cláusula HAVING, que hace que del resultado sólo se visualicen los grupos que cumplan la condición. Es decir sólo aparecen las oficinas que tienen menos de 2 empleados.
Siempre que en una condición de selección haya una función de columna, la condición deberá incluirse en la cláusula HAVING, además, como HAVING filtra filas del resultado, sólo puede contener expresiones (nombres de columnas, expresiones, funciones…) que también pueden aparecer en la lista de selección, por lo que también se aplica la misma regla a no olvidar:

EN LA CLÁUSULA HAVING UN NOMBRE DE COLUMNA NO PUEDE APARECER FUERA DE UNA FUNCIÓN DE AGREGADO SI NO ES UNA COLUMNA DE AGRUPACIÓN.

Las expresiones que pongamos en HAVING no tienen porqué aparecer en la lista de selección, por ejemplo en la SELECT anterior se podía haber escrito:


HAVING SUM(ventas)=10000

Para practicar puedes realizar este Ejercicio Selección sobre agrupaciones con HAVING.

• Ejercicio propuesto de la Unidad 5 • Prueba evaluativa de la Unidad 5
Febrero-2010
Pág. 5.7

Atrás  Inicio  Adelante



.