Está en la página 1de 2

Teniendo en cuenta la base de datos de ejemplo “HR”, usted debe construir el script necesario para realizar

las sentencias solicitadas y pegarla debajo de cada ítem.

1. Listar EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY, DEPARTMENT_ID, MANAGER_ID; para


todos los empleados que pertenecen a un departamento y que tienen como manager (MANAGER_ID), el
mismo manager del departamento a al cual pertenecen, es decir, el manager del empleado es el mismo
manager del departamento al que pertenece el empleado. Ordene los resultados ascendentemente por el
número del departamento.
select m.employee_id,m.first_name from employees e join employees m on (e.manager_id =
m.employee_id)join departments d on(m.manager_id = d.department_id)

2. Listar información del departamento, al cual pertenece el empleado que tiene el salario más alto.
SELECT department_id,last_name, salary FROM employees WHERE salary >= ALL (SELECT salary
FROM employees )

3. Listar información de los empleados que son manager (MANAGER_ID) de empleados y también son
manager de departamentos
select distinct m.employee_id, m.last_name from employees e join employees m on(e.manager_id =
m.employee_id) join departments d on(m.employee_id = d.manager_id)

4. Listar DEPARTMENT_ID, DEPARTMENT_NAME y la cantidad de empleados de aquellos departamentos


que tienen la mayor cantidad de empleados.
SELECT DEPARTMENT_NAME AS DEPARTAMENTO,COUNT (*) AS NUMERO_DE_EMPLEADOS FROM
EMPLOYEES JOIN DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID=DEPARTMENTS.DEPARTMENT_ID
GROUP BY DEPARTMENT_NAME ORDER BY NUMERO_DE_EMPLEADOS DESC

5. Listar información del cargo que actualmente es el más asignado a los empleados. Además muestre la
cantidad de empleados que tienen el cargo
SELECT job_id ,count(*) FROM employees GROUP BY department_id,job_id order by count(*) desc

6. Listar información del manager que tiene la menor cantidad de empleados a cargo. Además muestre la
cantidad de empleados a cargo
select manager_id,count(employee_id) as total_employees from employees group by manager_id having
count(employee_id)=(select min(count(employee_id))from employees group by manager_id)

7. Listar información de los departamentos que tienen más de 8 empleados

select department_id, count(last_name) from employees group by department_id having


count(last_name)> 8

8. Listar DEPARTMENT_ID y FIRST_NAME del empleado que es manager de más de 4 empleado y es


manager de algún departamento. Además muestre el DEPARTMENT_ID donde es manager
SELECT first_name , department_id FROM employees WHERE employee_id IN (SELECT manager_id
FROM employees GROUP BY manager_id HAVING COUNT(employee_id)>=4)

9. Listar EMPLOYEE_ID, FIRST_NAME, LAST_NAME y SALARY del empleado que tiene el segundo mayor
salario
SELECT SALARY ,first_name,last_name FROM EMPLOYEES e WHERE 1 = (SELECT COUNT(
DISTINCT SALARY ) FROM EMPLOYEES WHERE SALARY > e.SALARY)

10. Listar EMPLOYEE_ID, FIRST_NAME,SALARY y HIRE_DATE de los empleados no fueron contratados en


1997 y que tienen salario mayor o igual que todos los salario de los empleados contratados en 1997
SELECT LAST_NAME,HIRE_DATE,salary FROM HR.EMPLOYEES WHERE
TO_CHAR(HIRE_DATE,'YYYY')not IN(1997) and salary in (select salary from employees WHERE
TO_CHAR(HIRE_DATE,'YYYY') > 1997)

11. Listar EMPLOYEE_ID, FIRST_NAME de los empleados manager que tienen 8 o más empleados a cargo.
Ordene descendentemente los resultados según la cantidad de empleados a cargo.
SELECT employee_id , first_name FROM employees WHERE employee_id IN (SELECT manager_id
FROM employees GROUP BY manager_id HAVING COUNT(employee_id)>=8) order by first_name desc

12. Listar EMPLOYEE_ID, FIRST_NAME y SALARY de los empleados que tienen el cargo de Diana y tienen
un salario mayor que el salario del empleado 143. ¿Qué problemas podrían presentarse al ejecutar la
consulta que usted ha creado?
select salary, first_name ,employee_id, job_id from employees where job_id =(select job_id from employees
where first_name ='Diana') and salary > (SELECT salary FROM employees WHERE employee_id = 143)

13. Listar información de los empleados que son manager (MANAGER_ID) de departamentos pero no son
manager de empleados

select manager_id from employees where manager_id in ( select department_id from employees ) and
manager_id not in(select employee_id from employees)

14. Listar información de los empleados (Manager) que tienen a cargo más 5 empleados y también son
manager de departamentos.
select manager_id, department_id,employee_id from employees where employee_id in ( SELECT
manager_id FROM employees GROUP BY manager_id HAVING COUNT(employee_id)>=5)

15. Listar información de los empleados que tienen el cargo que ocupa el empleado identificado con código 141
y tiene salario mayor que el salario del empleado143.
select salary, first_name ,employee_id, job_id from employees where job_id =(select job_id from employees
where employee_id =141) AND salary >(SELECT salary FROM employees WHERE employee_id = 143)

También podría gustarte