miércoles, 18 de febrero de 2015

Agrupando resultados con GROUP BY




La cláusula GROUP BY unida a un SELECT permite agrupar filas según las columnas que se indiquen como parámetros, y se suele utilizar en conjunto con las funciones de agrupación, para obtener datos resumidos y agrupados por las columnas que se necesiten.

Por ejemplo: Si quieres saber la cantidad total de gastos en sueldos  por cada departamento, la consulta sería:

SELECT dept, SUM (salary)
FROM employee

GROUP BY dept;

Al ejecutar el script obtendremos los mismos datos pero agrupándolos por departamento, de modo que para cada departamento sabemos cuántos en gastos se ha realizado.

   dept              salary
--------------  --------------
Electrical           25000
Electronics          55000
Aeronautics          35000
InfoTech             30000


Es muy importante tener en cuenta que cuando utilizamos la cláusula GROUP BY, los únicos campos que podemos incluir en el SELECT sin que estén dentro de una función de agregación, son los que vayan especificados en el GROUP BY. 

La cláusula GROUP BY se puede utilizar con más de un campo al mismo tiempo. Si indicamos más de un campo como parámetro nos devolverá la información agrupada por los registros que tengan el mismo valor en los campos indicados. 

Tener en cuenta que al utilizar la cláusula GROUP BY no garantiza que los datos se devuelvan ordenados. Se recomienda incluir una cláusula ORDER BY por las mismas columnas que utilicemos en GROUP BY, especificando el orden que no mas se adecue a nuestra necesidad.


SELECT dept_id dept, SUM(salary)
  FROM employee
 GROUP BY dept_id, dept
 ORDER BY dept_id, dept asc

No hay comentarios:

Publicar un comentario