Lección 11 de SQL: Consultas con agregados (Parte 2)

Nuestras consultas se están volviendo bastante complejas, pero hemos introducido casi todas las partes importantes de una consulta SELECT. Una cosa que quizás haya notado es que si la cláusula GROUP BY se ejecuta después de la cláusula WHERE (que filtra las filas que se deben agrupar), ¿cómo filtramos exactamente las filas agrupadas?

Afortunadamente, SQL nos permite hacer esto agregando una cláusula HAVING adicional que se utiliza específicamente con la cláusula GROUP BY para permitirnos filtrar filas agrupadas del conjunto de resultados.

  • Consulta de selección con restricción HAVING
SELECT group_by_column, AGG_FUNC(column_expression) AS aggregate_result_alias, …
FROM mytable
WHERE condition
GROUP BY column
HAVING group_condition;

Las restricciones de cláusula HAVING se escriben de la misma manera que las restricciones de cláusula WHERE y se aplican a las filas agrupadas. Con nuestros ejemplos, esto puede no parecer una construcción particularmente útil, pero si imagina datos con millones de filas con diferentes propiedades, poder aplicar restricciones adicionales suele ser necesario para comprender rápidamente los datos.

¿Sabías?
Si no está utilizando la cláusula GROUP BY, una simple cláusula WHERE será suficiente.

Ejercicio

Para este ejercicio, profundizará en los datos de los empleados del estudio cinematográfico. Piense en las distintas cláusulas que desea aplicar para cada tarea.


  1. Encuentra el número de artistas en el estudio (sin cláusula HAVING).
  2. Encuentra el número de empleados de cada rol en el estudio.
  3. Encuentra el número total de años empleados por todos los ingenieros.