Consultas con Agrupamiento Talleres Oracle
CONSULTAS CON AGRUPAMIENTO
----------------------------------
-- 1. AVG, MAX, MIN, SUM
----------------------------------
SELECT AVG(SALARY), MAX(SALARY), MIN(SALARY), SUM(SALARY)
FROM EMPLOYEES
WHERE JOB_ID LIKE '%REP%';
SELECT MIN(HIRE_DATE), MAX(HIRE_DATE)
FROM EMPLOYEES;
----------------------------------
-- 2. COUNT
----------------------------------
SELECT COUNT(*)
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 50;
SELECT COUNT(COMMISSION_PCT)
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;
----------------------------------
-- 3. DISTINCT
----------------------------------
SELECT COUNT(DISTINCT DEPARTMENT_ID)
FROM EMPLOYEES;
----------------------------------
-- 4. USO DE FUNCIONES DE AGRUPAMIENTO Y NULOS
----------------------------------
SELECT AVG(COMMISSION_PCT)
FROM EMPLOYEES;
SELECT AVG ( NVL (COMMISSION_PCT, 0))
FROM EMPLOYEES;
----------------------------------
-- 5. GROUP BY
----------------------------------
SELECT DEPARTMENT_ID, AVG(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID ;
Consultas con Agrupamiento Talleres Oracle
SELECT DEPARTMENT_ID, JOB_ID, SUM(SALARY)
FROM EMPLOYEES
WHERE DEPARTMENT_ID > 40
GROUP BY DEPARTMENT_ID, JOB_ID
ORDER BY DEPARTMENT_ID;
----------------------------------
-- 6. HAVING : RESTRINGIENDO FILAS EN AGRUPAMIENTO
----------------------------------
SELECT DEPARTMENT_ID, MAX(SALARY)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING MAX(SALARY) > 10000 ;
SELECT JOB_ID, SUM(SALARY) PAYROLL
FROM EMPLOYEES
WHERE JOB_ID NOT LIKE '%REP%'
GROUP BY JOB_ID
HAVING SUM(SALARY) > 13000
ORDER BY SUM(SALARY);
----------------------------------
-- 7. FUNCIONES DE AGRUPAMIENTO ANIDADAS
----------------------------------
SELECT MAX( AVG (SALARY) )
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;
-----------------------------------------
-- 8. FUNCIONES DE AGRUPAMIENTO ANIDADAS
-----------------------------------------
SELECT MAX( AVG (SALARY) )
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;
-----------------------------------------
-- 9.ROLLUP : REPORTE CON LOS TOTALES POR GRUPO
-----------------------------------------
SELECT COUNTRY_NAME , CITY , SUM( SALARY ) , COUNT(*)
FROM EMPLOYEES E
JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
JOIN LOCATIONS L ON D.LOCATION_ID = L.LOCATION_ID
JOIN COUNTRIES C ON L.COUNTRY_ID = C.COUNTRY_ID
GROUP BY ROLLUP ( COUNTRY_NAME , CITY )
ORDER BY 1 , 2;
Consultas con Agrupamiento Talleres Oracle
-----------------------------------------
-- 10.CUBE : REPORTE QUE AGREGA RESUMEN DE CADA SUBTOTAL
-----------------------------------------
SELECT COUNTRY_NAME , CITY , SUM( SALARY ) , COUNT(*)
FROM EMPLOYEES E
JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
JOIN LOCATIONS L ON D.LOCATION_ID = L.LOCATION_ID
JOIN COUNTRIES C ON L.COUNTRY_ID = C.COUNTRY_ID
GROUP BY CUBE ( COUNTRY_NAME , CITY )
ORDER BY 1 , 2;