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.33333333En 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);