------------------------------------------------------------------------------
--NOMBRE COMPLETO DEL EMPLEADO CUYA COMISION SEA NULA
-----------------------------------------------------------------------------
--NOMBRE COMPLETO DEL EMPLEADO QUE HAYA SIDO CONTRATADO EN EL A�O 2007
--Soluci�n 1
--Soluci�n 2
--Soluci�n 3
---------------------------------------------------------------------------
--EMPLEADOS QUE TRABAJAN EN EL DEPTO 40 Y 80
--Solucion 1
SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (40,80);
-----------------------------------------------------------------------------
-- PROMEDIO DE COMISION DE TODOS LOS EMPLEADOS
--Solucion 1
SELECT SUM (COMMISSION_PCT)/COUNT(EMPLOYEE_ID) COMISSION_GRAL
FROM EMPLOYEES;
--Solucion 2
SELECT AVG(DECODE(COMISSION_PCT, NULL,0, COMMISSION_PCT))
FROM EMPLOYEES;
--Soluci�n 3 redondeando
SELECT ROUND ((AVG(NVL(COMMISSION_PCT,0))),2) PROMEDIO_GRAL
FROM EMPLOYEES;
-------------------------------------------------------------------
--Pagina 220 ejercicio 4
SELECT ROUND (MAX (SALARY),0) "MAXIMUM", ROUND (MIN (SALARY),0) "MINIMUM", ROUND
(SUM (SALARY),0) "SUM", ROUND ( AVG(SALARY),0) "AVERAGE"
FROM EMPLOYEES;
-------------------------------------------------------------------
--Pagina 220 ejercicio 5
SELECT JOB_ID, ROUND (MAX (SALARY),0) "MAXIMUM", ROUND (MIN (SALARY),0) "MINIMUM",
ROUND (SUM (SALARY),0) "SUM", ROUND ( AVG(SALARY),0) "AVERAGE"
FROM EMPLOYEES
GROUP BY JOB_ID;
-------------------------------------------------------------------
--Pagina 220 ejercicio 6
-------------------------------------------------------------------
--Pagina 222 ejercicio 10
-------------------------------------------------------------------
--Pagina 254 ejercicio 4
-------------------------------------------------------------------
--Pagina 255 ejercicio 6
-------------------------------------------------------------------
--Pagina 256 ejercicio 8
--Solucion
SELECT last_name, HIRE_DATE
FROM employees
WHERE HIRE_DATE>(select HIRE_DATE
From employees
where last_name = 'Davies');
--Sol 2
SELECT E.last_name, E.HIRE_DATE
FROM EMPLOYEES E
INNER JOIN
EMPLOYEES E2 ON E.HIRE_DATE > E2.HIRE_DATE AND E2.LAST_NAME = 'Davies';
-------------------------------------------------------------------
--Pagina 257 ejercicio 9
INNER JOIN
EMPLOYEES M ON E.MANAGER_ID = M.MANAGER_ID AND E.HIRE_DATE < M.HIRE_DATE;
-- SOLUCION 2
SELECT NOJEFES.LAST_NAME,
NOJEFES.HIRE_DATE,
JEFES.LAST_NAME AS APELLIDOJEFE,
JEFES.HIRE_DATE AS CONTRATACIONJEFE
FROM
(SELECT DISTINCT (E.MANAGER_ID), E2.LAST_NAME, E2.HIRE_DATE
FROM EMPLOYEES E
INNER JOIN
EMPLOYEES E2 ON E.MANAGER_ID = E2.MANAGER_ID) JEFES
INNER JOIN
(SELECT EMPLOYEE_ID, LAST_NAME, HIRE_DATE, MANAGER_ID
FROM EMPLOYEES) NOJEFES ON JEFES.MANAGER_ID = NOJEFES.MANAGER_ID
WHERE JEFES.HIRE_DATE > NOJEFES.HIRE_DATE
ORDER BY 3, 4;
--SOL3
SELECT NOJEFES.LAST_NAME,
NOJEFES.HIRE_DATE,
JEFES.LAST_NAME AS APELLIDOJEFE,
JEFES.HIRE_DATE AS CONTRATACIONJEFE
FROM
(SELECT DISTINCT (E.MANAGER_ID), E2.LAST_NAME, E2.HIRE_DATE
FROM EMPLOYEES E
INNER JOIN
EMPLOYEES E2 ON E.MANAGER_ID = E2.MANAGER_ID) JEFES
INNER JOIN
(SELECT EMPLOYEE_ID, LAST_NAME, HIRE_DATE, MANAGER_ID
FROM EMPLOYEES) NOJEFES ON JEFES.HIRE_DATE > NOJEFES.HIRE_DATE AND
JEFES.MANAGER_ID = NOJEFES.MANAGER_ID
ORDER BY 3, 4;
--5,
--10,
-- 11,
--13