You are on page 1of 2

--1.

- Visualizar el nombre, n� de departamento, salario de cualquier empleado cuyo


--salario sea mayor al mayor salario de los empleados del departamento 80.

select D.DEPARTMENT_ID, D.DEPARTMENT_NAME ,E.salary


from DEPARTMENTS D INNER JOIN EMPLOYEES E ON D.DEPARTMENT_ID=E.DEPARTMENT_ID
WHERE E.SALARY>(SELECT MAX(SALARY)
FROM EMPLOYEES
WHERE DEPARTMENT_ID=80 )

--2.- Mostrar todos los departamentos en los que sus empleados cobran, en promedio,
-- m�s que lo que cobran, en promedio, los empleados del departamento 30.

SELECT D.DEPARTMENT_ID ,D.DEPARTMENT_NAME ,D.MANAGER_ID


,D.LOCATION_ID,AVG(E.SALARY)
FROM DEPARTMENTS D INNER JOIN EMPLOYEES E ON D.DEPARTMENT_ID=E.DEPARTMENT_ID
HAVING AVG(E.SALARY)>(SELECT AVG(SALARY)FROM EMPLOYEES
WHERE DEPARTMENT_ID=30 )
GROUP BY D.DEPARTMENT_ID ,D.DEPARTMENT_NAME ,D.MANAGER_ID ,D.LOCATION_ID

--3.- Mostrar los c�digos, apellidos y nombres de departamento de aquellos


empleados
-- que fueron contratados un d�a martes de un mes que se introduce por teclado,
-- no interesa el a�o. No puede utilizar LIKE.

SELECT EMPLOYEE_ID, LAST_NAME,DEPARTMENT_NAME


FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON E.DEPARTMENT_ID=D.DEPARTMENT_ID
WHERE (TO_CHAR(HIRE_DATE,'fmDay' )='Martes') AND (TO_CHAR(HIRE_DATE,'fmMonth' )
='&mes')

--4.- Mostrar los c�digos de los departamentos que tienen una letra e en la tercera
-- posici�n. No puede utilizar LIKE.

SELECT DEPARTMENT_ID,DEPARTMENT_NAME
FROM DEPARTMENTS
WHERE SUBSTR(DEPARTMENT_NAME,3,1)='e';

--5.- Obtener el nombre del departamento que tiene la mayor cantidad de empleados

SELECT DEPARTMENT_NAME
FROM DEPARTMENTS
WHERE DEPARTMENT_ID=(SELECT DEPARTMENT_ID
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
HAVING COUNT(*)=(SELECT MAX(COUNT(*))FROM EMPLOYEES
GROUP BY DEPARTMENT_ID )

--7.- Obtener los nombres de los empleados de que tienen el menor y mayor salario,
-- ademas de los nombres de departamento donde trabajan.

SELECT FIRST_NAME,DEPARTMENT_NAME
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON E.DEPARTMENT_ID=D.DEPARTMENT_ID
WHERE SALARY=(SELECT MAX(SALARY)FROM EMPLOYEES ) OR
SALARY=(SELECT MIN(SALARY)FROM EMPLOYEES );

--8.- Desplegar los nombres de los 5 departamentos en los que trabajan empleados
que
--tienen los 5 menores salarios en la institucion, el despliegue debe ser por cada
-- empleado y su respectivo departamento, los departamentos deben ser diferentes.
--9.- Desplegar los nombres de los empleados que tienen el mismo oficio y jefe que
el
-- empleado cuyo nombre y apellido se ingresa por teclado.
SELECT FIRST_NAME
FROM EMPLOYEES
WHERE (JOB_ID ,MANAGER_ID )IN (SELECT JOB_ID, MANAGER_ID
FROM EMPLOYEES
WHERE FIRST_NAME||' '|| LAST_NAME='&NOMBRES');

--10.- Si JOB_ID es SA_MAN, el incremento salarial es del 12 %; si es ST_CLERK,


-- el incremento es del 15 %; si es SA_REP, el incremento es del 20 %. Para todos
-- los dem�s cargos es del 8.2%. Desplegar el antiguo y nuevo salario.
SELECT FIRST_NAME ,JOB_ID, SALARY,
CASE JOB_ID WHEN 'SA_MAN' THEN 1.12*SALARY
WHEN 'ST_CLERK' THEN 1.15*SALARY
WHEN 'SA_REP' THEN 1.20*SALARY
ELSE 1.082*SALARY END "SALARIO ACTUAL"
FROM EMPLOYEES

You might also like