Databases
T01-008-01 GROUP BY
Enunciado
La cláusula GROUP BY permite obtener subtotales de los valores presentes en una columna o expresión.
Sintaxis:
La cláusula
GROUP BYla situaremos entre elWHEREy elORDER BY.
SELECT columna1, columna2, ...
FROM tabla1, tabla2, ...
WHERE condición1, condición2, …
GROUP BY columna1, columna2, …
ORDER BY ordenación;Ejemplo:
Antes de ver un ejemplo de una sentencia con la cláusula GROUP BY, conviene recordar que en consultas anteriores hemos trabajado con funciones de agregado, que permitían extraer información resumida de un conjunto de filas. Por ejemplo, podíamos informar sobre el salario medio (
AVG()) de los empleados del esquemaHR.
SELECT AVG(SALARY) AS "SALARIO MEDIO"
FROM HR.employees
SALARIO MEDIO 6461.831775... También podíamos mostrar el salario medio de un determinado departamento:
SELECT AVG(SALARY) AS "SALARIO MEDIO"
FROM HR.employees
WHERE DEPARTMENT_ID = 60
SALARIO MEDIO 5760 Pero, sería ilógico tener que realizar una consulta por cada departamento para conocer cuál es el salario medio en cada uno de los departamentos. La incorporación de la cláusula
GROUP BYnos va a permitir obtener un resultado parcial por cada uno de los elementos por los que se agrupa.En el siguiente ejemplo, vamos a agrupar a los empleados por su
DEPARTMENT_ID, de manera que todos los que tengan el mismo valor en ese atributo, participarán en la obtención del resultado parcial:
SELECT DEPARTMENT_ID, AVG(SALARY) AS "SALARIO MEDIO"
FROM HR.employees
GROUP BY DEPARTMENT_ID
DEPARTMENT_ID SALARIO MEDIO 50 3475.555555... 40 6500 110 10154 90 19333.333333... 30 4150 70 10000 - 7000 10 4400 20 9500 60 5760 100 8601.333333... 80 8955.882352... Cualquiera de las funciones de agregado que vimos en el apartado de funciones, pueden ser utilizadas en conjunción con
GROUP BY.Ejercicio:
Muestra el salario MÍNIMO y MÁXIMO de los empleados de cada uno de los tipos de trabajo existentes.
Ordena el resultado alfabéticamente, en orden inverso, según el tipo de trabajo.
Tipo
Solución
SELECT JOB_ID, MIN(SALARY) AS "SALARIO MINIMO", MAX(SALARY) AS "SALARIO MAXIMO"
FROM HR.employees
GROUP BY JOB_ID
ORDER BY JOB_ID DESC
Prueba
LibrerÃas (Onfly databases)

