Anda di halaman 1dari 6

--NOMBRE DEL EMPLEADO QUE EMPIECE CON D

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'D%';

------------------------------------------------------------------------------
--NOMBRE COMPLETO DEL EMPLEADO CUYA COMISION SEA NULA

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE COMMISSION_PCT IS NULL;

-----------------------------------------------------------------------------
--NOMBRE COMPLETO DEL EMPLEADO QUE HAYA SIDO CONTRATADO EN EL A�O 2007

--Soluci�n 1

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE HIRE_DATE LIKE '%07';

--Soluci�n 2

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE HIRE_DATE BETWEEN '01/01/07' AND '31/12/07';

--Soluci�n 3

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE, 'YYYY') = '2007';

---------------------------------------------------------------------------
--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);

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE (DEPATMENT_ID = 40) OR (DEPARTMENT_ID = 80);

SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo


FROM EMPLOYEES
WHERE DEPARTMENT_ID=80;
UNION ALL
SELECT FIRST_NAME||' '||LAST_NAME Nombre_Completo
FROM EMPLOYEES
WHERE DEPARTMENT_ID=40;

-----------------------------------------------------------------------------
-- 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;

--EN VEZ DE COMILLAS SE PUEDE PONER AS NOMBRE

-------------------------------------------------------------------
--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

SELECT JOB_ID, COUNT (EMPLOYEE_ID)


FROM EMPLOYEES
GROUP BY JOB_ID;

SELECT JOB_ID, COUNT (*)


FROM EMPLOYEES
GROUP BY JOB_ID;

-------------------------------------------------------------------
--Pagina 222 ejercicio 10

SELECT COUNT(EMPLOYEE_ID) "TOTAL",


SUM(DECODE (TO_CHAR (HIRE_DATE,'YYYY'), '1995', 1, 0)) "1995",
SUM(DECODE (TO_CHAR (HIRE_DATE,'YYYY'), '1996', 1, 0)) "1996",
SUM(DECODE (TO_CHAR (HIRE_DATE,'YYYY'), '1997', 1, 0)) "1997",
SUM(DECODE (TO_CHAR (HIRE_DATE,'YYYY'), '1998', 1, 0)) "1998"
FROM EMPLOYEES;

-------------------------------------------------------------------
--Pagina 254 ejercicio 4

SELECT E.last_name "EMPLOYEE", E.EMPLOYEE_ID "EMP#", M.LAST_NAME "MANAGER",


E.MANAGER_ID "MGR#"
FROM employees E
LEFT OUTER JOIN
EMPLOYEES M ON E.MANAGER_ID = M.EMPLOYEE_ID;

SELECT E.last_name "EMPLOYEE", E.EMPLOYEE_ID "EMP#", M.LAST_NAME "MANAGER",


M.MANAGER_ID "MGR#"
FROM employees E
LEFT OUTER JOIN
EMPLOYEES M ON E.MANAGER_ID = M.EMPLOYEE_ID;

-------------------------------------------------------------------
--Pagina 255 ejercicio 6

Select E.LAST_NAME "EMPLOYEE", E.DEPARTMENT_ID "DEPARTMENT", C.LAST_NAME


"COLLEAGUE"
FROM EMPLOYEES E
LEFT OUTER JOIN
EMPLOYEES C ON E.DEPARTMENT_ID = C.DEPARTMENT_ID
WHERE E.EMPLOYEE_ID <> C.EMPLOYEE_ID;

-------------------------------------------------------------------
--Pagina 256 ejercicio 8

Select hire_date "CONTRATO"


from employees
where last_name = 'Davies';

SELECT last_name, HIRE_DATE (select HIRE_DATE


From employees
where las_name = 'Davies')
FROM employees;

--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

SELECT E.LAST_NAME, E.HIRE_DATE, M.LAST_NAME, M.HIRE_DATE


FROM EMPLOYEES E

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;

--Pagina 279 ejercicio 2

SELECT EMPLOYEE_ID, LAST_NAME, SALARY


FROM EMPLOYEES
WHERE SALARY > (SELECT AVG (SALARY)
FROM EMPLOYEES)
ORDER BY SALARY ASC;

--Pagina 279 ejercicio 3

SELECT EMPLOYEE_ID, LAST_NAME


FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LOWER (LAST_NAME) LIKE '%u%');

--Pagina 280 ejercicio 4

SELECT LAST_NAME, DEPARTMENT_ID, JOB_ID


FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID
FROM DEPARTMENTS
WHERE LOCATION_ID =1700);

--Pagina 280 ejercicio 5

SELECT lAST_NAME, salary


FROM employees
WHERE manager_id in (SELECT manager_id
FROM employees
WHERE LOWER(last_name) = 'king');

--intento 2 para que no salga king

SELECT lAST_NAME, salary


FROM employees
WHERE manager_id in ( SELECT manager_id
FROM employees
WHERE LOWER(last_name) <> 'king') AND (SELECT manager_id
FROM employees
WHERE LOWER(last_name) =
'king');

-- Pagina 188 ejercicio 2,

SELECT employee_id, last_name, salary, ROUND (salary*1.155,0) "new salary"


From employees;

--5,

Select INITCAP(last_name) "nombre" , length(last_name) "longitud"


From employees
Where FIRST_name LIKE ('J%') OR FIRST_name LIKE ('A%') OR FIRST_name LIKE ('M%')
ORDER BY LAST_NAME;

--10,

Select last_name, hire_date, TO_CHAR (hire_date, 'DAY')


from employees
order by MOD (TO_CHAR(HIRE_DATE, 'D') + 6,7);

-- 11,

Select last_name, nvl(to_char(commission_pct), 'No Commission') "COMM"


from employees;

--13

Select job_id "puesto" ,


decode (job_id, 'AD_PRES', 'A', 'ST_MAN', 'B', 'IT_PROG', 'C', 'SA_REP', 'D',
'ST_CLERK', 'E', '0') "GRA"
FROM EMPLOYEES;

Anda mungkin juga menyukai