Ir al contenido principal

Restringiendo Resultados de Grupo

Las condiciones en la clausula WHERE restringen las filas devueltas por una consulta. Las filas son incluidas si cumplen las condiciones listas en la clausula WHERE y alguna veces son conocidas como row-level results. Filas agrupadas con la clausula GROUP BY y aplicando funciones agregadas a estos resultados a menudo se les conoce como group-level results.
La siguiente consulta limita las filas recuperadas de la tabla JOB_HISTORY mediante una condición en la clausula WHERE, esta condición está basada en la columna DEPARTMENT_ID.

select department_id
from job_history
where department_id in (50,60,80,110)

Esta consulta devuelve 7 filas. Si la clausula WHERE estuviera ausente, todas las filas serian recuperadas. Suponga que usted desea conocer cuántos empleados fueron previamente empleados en cada departamento.  Hay 7 filas que pueden ser manualmente agrupadas y contadas. Sin embargo. Si hubieran mas filas  o una gran cantidad de filas una función agregada sería utilizada, como se muestra en la siguiente consulta:

select department_id, COUNT(*)
from   job_history
where  department_id IN (50,60,80,110)
group by department_id;

Esta consulta es muy similar a la anterior, la función agregada COUNT fue agregada a la lista SELECT y la clausula GROUP BY DEPARTMENT_ID fue también agregada. Cuatro filas con sus recuentos son devueltas y es claramente que los siete registros restringidos mediante la clausula WHERE fueron agrupados en cuatro grupos en base al DEPARTMENT_ID.
Suponga que usted desea refinar este resultado y solo incluir los departamentos con mas de un empleado. La clausula HAVING limita o restringe la filas a nivel grupo.

Esta consulta debe desarrollar los siguientes pasos siguientes:

1.       Considere el conjunto de datos entero a nivel fila.
2.       Limitar el conjunto de datos basado en la clausula WHERE.
3.       Segmentar los datos en uno o más grupos utilizando atributos agrupadores especificados en la clausula GROUP BY.
4.       Aplicar funciones agregadas para crear un nuevo conjunto de datos a nivel grupo. Cada fila puede ser considerada como una agregación de sus datos de nivel de fila fuente basado en el grupo creado.

5.       Limitar o restringir el nivel grupo con una clausula HAVING.

Comentarios