Modos de resumir valores de grupo

Puede utilizar la cláusula GROUP BY para resumir valores de grupo.

Utilice GROUP BY para agrupar filas por los valores de una o más columnas. A continuación, puede aplicar funciones de totales a cada grupo. Puede utilizar una expresión en la cláusula GROUP BY para especificar cómo desea agrupar las filas.

Excepto las columnas indicadas en la cláusula GROUP BY, la sentencia SELECT debe especificar las columnas seleccionadas como un operando de una de las funciones de totales.

Si una columna que especifica en la cláusula GROUP BY contiene valores nulos, Db2 considera que esos valores nulos son iguales y todos los nulos forman un solo grupo.

Dentro de la sentencia SELECT, la cláusula GROUP BY sigue a la cláusula FROM y cualquier cláusula WHERE, y precede a las cláusulas HAVING y ORDER BY.

También puede agrupar las filas por los valores de más de una columna.

ejemplos

Ejemplo
Esta consulta lista, para cada departamento, el nivel de formación más alto y más bajo dentro del departamento. La tabla de resultados es similar a la siguiente:
SELECT DEPT, MIN(EDL), MAX(EDL)
  FROM EMP
  GROUP BY DEPT;
DEPT
====     ==     ==
A00      14     18
B01      18     18
C01      18     20
D11      16     18
E21      14     16  
Ejemplo
Esta consulta busca el salario medio de los empleados con la misma ocupación en los departamentos D11 y E21:
SELECT DEPT, JOB, AVG(SALARY) AS AVG_SALARY
  FROM EMP
  WHERE DEPT IN ('D11', 'E21')
  GROUP BY DEPT, JOB;

La tabla de resultados es similar a la siguiente:

DEPT     JOB         AVG_SALARY
====     ===     ==============
D11      DES     28790.00000000
D11      MGR     32250.00000000
E21      FLD     23053.33333333

En este ejemplo, Db2 agrupa las filas primero por número de departamento y luego (dentro de cada departamento) por trabajo antes de derivar el valor de salario promedio para cada grupo.

Ejemplo
Esta consulta busca el salario medio para todos los empleados que se contrataron en el mismo año. Puede utilizar la siguiente subselección para agrupar las filas por año de contratación:
SELECT AVG(SALARY), YEAR(HIREDATE)
  FROM EMP
  GROUP BY YEAR(HIREDATE);