Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 9

CONSULTAS SQL EN ORACLE

Esquema Conceptual HR
JOBS

JOB_HISTORY

JOB_ID
<pi> Variable characters (10) <M>
JOB_TITLE
Variable characters (35) <M>
MIN_SALARY
Number (6)
MAX_SALARY
Number (6)

START_DATE <pi> Date & Time <M>


END_DATE
Date & Time <M>

job_history_jobs

PK_JOB_HISTORY <pi>
...

PK_JOBS <pi>
...

job_history_employees

job_history_departments

employees_jobs

EMPLOYEES

DEPARTMENTS
employees_departments

EMPLOYEE_ID
<pi> Number (6)
<M>
MANAGER_ID
Number (6)
FIRST_NAME
Variable characters (20)
LAST_NAME
Variable characters (25) <M>
EMAIL
Variable characters (25) <M>
PHONE_NUMBER
Variable characters (20)
HIRE_DATE
Date & Time
<M>
SALARY
Number (8,2)
COMMISSION_PCT
Number (2,2)

DEPARTMENT_ID
<pi> Number (4)
<M>
DEPARTMENT_NAME
Variable characters (30) <M>
MANAGER_ID
Number (4)
PK_DEPARTMENTS <pi>
...

departments_locations
departments_employees

PK_EMPLOYEES <pi>
...

LOCATIONS
LOCATION_ID
<pi> Number (4)
<M>
STREET_ADDRESS
Variable characters (40)
POSTAL_CODE
Variable characters (12)
CITY
Variable characters (30) <M>
STATE_PROVINCE
Variable characters (25)

employees_employees

PK_LOCATIONS <pi>
...

locations_countries

REGIONS
REGION_ID
<pi> Number
<M>
REGION_NAME
Variable characters (25)
PK_REGIONS <pi>
...

COUNTRIES
countries_regions

COUNTRY_ID
<pi> Characters (2)
<M>
COUNTRY_NAME
Variable characters (40)
PK_COUNTRIES <pi>
...

Esquema Fsico HR
JOBS
JOB_ID
JOB_TITLE
MIN_SALARY
MAX_SALARY
...

JOB_HISTORY

VARCHAR2(10) <pk>
VARCHAR2(35)
NUMBER(6)
NUMBER(6)

EMPLOYEE_ID
START_DATE
DEPARTMENT_ID
JOB_ID
END_DATE
...

NUMBER(6)
NUMBER(6)
NUMBER(4)
VARCHAR2(10)
NUMBER(6)
VARCHAR2(20)
VARCHAR2(25)
VARCHAR2(25)
VARCHAR2(20)
DATE
NUMBER(8,2)
NUMBER(2,2)

<pk,fk2>
<pk>
<fk3>
<fk1>

DEPARTMENTS

EMPLOYEES
EMPLOYEE_ID
EMP_EMPLOYEE_ID
DEPARTMENT_ID
JOB_ID
MANAGER_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
SALARY
COMMISSION_PCT
...

NUMBER(6)
DATE
NUMBER(4)
VARCHAR2(10)
DATE

<pk>
<fk3>
<fk2>
<fk1>

DEPARTMENT_ID
EMPLOYEE_ID
LOCATION_ID
DEPARTMENT_NAME
MANAGER_ID
...

NUMBER(4)
<pk>
NUMBER(6)
<fk1>
NUMBER(4)
<fk2>
VARCHAR2(30)
NUMBER(4)

LOCATIONS
LOCATION_ID
COUNTRY_ID
STREET_ADDRESS
POSTAL_CODE
CITY
STATE_PROVINCE
...

NUMBER(4)
<pk>
CHAR(2)
<fk>
VARCHAR2(40)
VARCHAR2(12)
VARCHAR2(30)
VARCHAR2(25)

REGIONS

COUNTRIES

REGION_ID
NUMBER
<pk>
REGION_NAME VARCHAR2(25)

COUNTRY_ID
CHAR(2)
<pk>
REGION_ID
NUMBER
<fk>
COUNTRY_NAME VARCHAR2(40)
...

1.

Desarrolle una consulta que liste el nombre del empleado, el cdigo del departamento y la fecha de inicio que
empez a trabajar, ordenando el resultado por departamento y por fecha de inicio, el ultimo que entro a trabajar va
de primero.
select PRIMER_NOMBRE, DEPARTAMENTO_ID, FECHA_CONTRATACION
from EMPLEADOS
order by DEPARTAMENTO_ID, FECHA_CONTRATACION desc;

2. Desarrolle una consulta que liste el cdigo, nombre y apellido de los empleados y sus respectivos fejes con titulo
Empleado y Jefe:
select e1.EMPLEADO_ID|| ||e1.PRIMER_NOMBRE|| ||e1.APELLIDO as Empelado, e2.EMPLEADO_ID|| ||
e2.PRIMER_NOMBRE|| ||e2.APELLIDO as Jefe
from EMPLEADOS e1,EMPLEADOS e2
where e1.GERENTE_ID=e2.EMPLEADO_ID;
3. Desarrolle una consulta que liste los pases por regin, los datos que debe mostrar son: el cdigo de la regin y nombre
de la regin con los nombre se sus pases.
select r.REGION_ID, REGION_NOMBRE, PAIS_NOMBRE
from REGIONES r, PAISES c
where r.REGION_ID=c.REGION_ID;
4. Realice una consulta que muestre el cdigo, nombre, apellido, inicio y fin del historial de trabajo de los empleados.
select e.EMPLEADO_ID, PRIMER_NOMBRE, APELLIDO, FECHA_INICIAL, FECHA_FINAL
from EMPLEADOS e,HISTORIAL_TRABAJO j
where e.EMPLEADO_ID=j.EMPLEADO_ID;
5. Elabore una consulta que muestre el nombre y apellido del empleado con titulo Empleado, el salario, porcentaje de
comisin, la comisin y salario total.
select PRIMER_NOMBRE|| ||APELLIDO Empleado, SALARIO Salario, PORCENTAJE_COMISION
Porcentaje,
nvl(PORCENTAJE_COMISION * SALARIO,0) Comision, SALARIO + nvl(PORCENTAJE_COMISION * SALARIO,0)
Salario total
from EMPLEADOS;
6. Elabore una consulta que liste nombre del trabajo y el salario de los empleados que son manager, cuyo cdigo es 100 o
125 y cuyo salario sea mayor de 6000.
select TRABAJO_TITULO, SALARIO
from EMPLEADOS e, TRABAJOS j
where e.TRABAJO_ID=e.TRABAJO_ID
and GERENTE_ID=100 or GERENTE_ID = 125 and SALARIO > 6000;
7. Desarrolle una consulta que liste el cdigo de la localidad, la ciudad y el nombre del departamento de nicamente de los
que se encuentran fuera de estados unidos (US).
select l.LOCALIDAD_ID, CIUDAD, NOMBRE_DEPARTAMENTO
from DEPARTAMENTOS d,LOCALIDADES l,PAISES c
where d.LOCALIDAD_ID=l.LOCALIDAD_ID
and l.PAIS_ID=c.PAIS_ID
and c.PAIS_ID !=US;
8. Realice una consulta que muestres el cdigo de la regin, nombre de la regin y el nombre de los pases que se
encuentran en Asia.
select r.REGION_ID, REGION_NOMBRE, PAIS_NOMBRE
from REGIONES r,PAISES c
where r.REGION_ID=c.REGION_ID and REGION_NOMBRE=Asia;
9. Elabore una consulta que liste el cdigo de la regin y nombre de la regin, cdigo de la localidad, la ciudad, cdigo del
pas y nombre del pas, de solamente de las localidades mayores a 2400.
select r.REGION_ID, REGION_NOMBRE, l.LOCALIDAD_ID, c.PAIS_ID, PAIS_NOMBRE
from LOCALIDADES l, REGIONES r,PAISES c

where l.PAIS_ID=c.PAIS_ID
and c.REGION_ID=r.REGION_ID
and l.LOCALIDAD_ID > 2400;
10. Desarrolle una consulta donde muestre el cdigo de regin con un alias de Regin, el nombre de la regin con una
etiqueta Nombre Regin, que muestre una cadena string (concatenacin) que diga la siguiente frase Cdigo Pas: CA
Nombre: Canad ,CA es el cdigo de pas y Canad es el nombre del pas con etiqueta Pas, el cdigo de localizacin
con etiqueta Localizacin, la direccin de calle con etiqueta Direccin y el cdigo postal con etiqueta Cdigo Postal,
esto a su vez no deben aparecer cdigo postal que sean nulos.
select a.REGION_ID Region, a.REGION_NOMBRE Nombre region, Codigo Pais :||b.PAIS_ID || Nombre : ||
b.PAIS_NOMBRE Pais, c.LOCALIDAD_ID Localizacin, c.DIRECCIONs Direccion , c.CODIGO_POSTAL Cdigo
Postal
from REGIONES a , PAISES b, LOCALIDADES c
where
a.REGION_ID = b.REGION_ID
and b.PAIS_ID =c.PAIS_ID
and c.CODIGO_POSTAL is not null;
11. Desarrolle una consulta que muestre el salario promedio de los empleados de los departamentos 30 y 80.
select avg(SALARIO)
from EMPLEADOS
where DEPARTAMENTO_ID in (30,80);
12. Desarrolle una consulta que muestre el nombre de la regin, el nombre del pas, el estado de la provincia, el cdigo de
los empleados que son manager, el nombre y apellido del empleado que es manager de los pases del reino Unido (UK),
Estados Unidos de Amrica (US), respectivamente de los estados de la provincia de Washington y Oxford.
select REGION_NOMBRE, PAIS_NOMBRE, PROVINCIA, e.GERENTE_ID, PRIMER_NOMBRE, APELLIDO
from EMPLEADOS e, DEPARTAMENTOS d,LOCALIDADES l,PAISES c,REGIONES r
where e.GERENTE_ID=d.GERENTE_ID
and d.LOCALIDAD_ID=l.LOCALIDAD_ID
and l.PAIS_ID=c.PAIS_ID
and c.REGION_ID=r.REGION_ID
and c.PAIS_ID in (UK,US)
and PROVINCIA in(Washington,Oxford);
13. Realice una consulta que muestre el nombre y apellido de los empleados que trabajan para departamentos que estn
localizados en pases cuyo nombre comienza con la letra C, que muestre el nombre del pas.
select PRIMER_NOMBRE|| ||APELLIDO, PAIS_NOMBRE
from EMPLEADOS e,DEPARTAMENTOS d, LOCALIDADES l,PAISES c
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and d.LOCALIDAD_ID=l.LOCALIDAD_ID
and l.PAIS_ID=c.PAIS_ID
and PAIS_NOMBRE like C%;
14. Desarrolle una consulta que liste en nombre del puesto (TRABAJO_TITULO), el nombre y apellidos del empleado que
ocupa ese puesto, cuyo email es NKOCHHAR, el 21 de septiembre de 1989.
select TRABAJO_TITULO, PRIMER_NOMBRE|| ||APELLIDO
from TRABAJOS j,EMPLEADOS e
where j.TRABAJO_ID=e.TRABAJO_ID
and email = NKOCHHAR
and FECHA_CONTRATACION = 21/09/1989;
15. Escriba una sola consulta que liste los empleados de los departamentos 10,20 y 80 que fueron contratados hace mas de
180 das, que ganan una comisin no menor de 20% y cuyo nombre o apellido comienza con la letra J.
select PRIMER_NOMBRE|| ||APELLIDO
from EMPLEADOS
where DEPARTAMENTO_ID in (10,20,80)
and months_between (sysdate,FECHA_CONTRATACION) >6
and PORCENTAJE_COMISION >= 0.2
and (PRIMER_NOMBRE like J% or APELLIDO like J%);

16. Realice una consulta de muestre el nombre, el apellido y nombre de departamento de los empleados cuyo nmero
telefnico tiene cdigo de rea 515 (numero de 12 dgitos: 3 del rea, 7 del numero y dos puntos), excluya los nmeros
telefnicos que tienen una longitud diferente de 12 caracteres.
select PRIMER_NOMBRE|| ||APELLIDO, NOMBRE_DEPARTAMENTO
from EMPLEADOS e,DEPARTAMENTOS d
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and TELEFONO like515%
and length(TELEFONO)<=12;
17. Desarrolle una consulta que muestre el cdigo, el nombre y apellido separado por coma con titulo de encabezado
Nombre Completo, el salario con titulo Salario, el cdigo de departamento con titulo Cdigo de Departamento y el
nombre de departamento al que pertenece con titulo Descripcin, nicamente se desean consultas los que pertenezcan
al departamento de IT y ordenar la informacin por salario descendentemente.
select
e.EMPLEADO_ID,
PRIMER_NOMBRE||,||APELLIDO
Nombre
Completo,
SALARIO
Salario,
d.DEPARTAMENTO_ID Codigo de Departamento, NOMBRE_DEPARTAMENTO Descripcin
from EMPLEADOS e, DEPARTAMENTOS d
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and NOMBRE_DEPARTAMENTO=IT
order by SALARIO Desc;
18. Realice una consulta que liste el nombre y apellido, salario del empleado, el nombre del departamento al que pertenece,
la direccin, el cdigo postal y la ciudad donde est ubicado el departamento, se debe mostrar nicamente aquellos que
sean del departamento 100,80 y 50 respectivamente, adems deben pertenecer nicamente a la ciudad del sur de san
francisco y el rango de salario debe ser entre 4000 y 8000 incluyendo los valores limites.
select PRIMER_NOMBRE, APELLIDO, SALARIO, NOMBRE_DEPARTAMENTO, DIRECCIONs, CODIGO_POSTAL,
CIUDAD
from EMPLEADOS e,DEPARTAMENTOS d,LOCALIDADES l
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and d.LOCALIDAD_ID=l.LOCALIDAD_ID
and d.DEPARTAMENTO_ID in (100,80,50)
and CIUDAD =South San Francisco
and SALARIO between 4000 and 8000;
19. Desarrolle una consulta donde seleccione el cdigo del empleado cuyo alias ser cdigo, el apellido concatenado con el
nombre de empleado pero separados por coma(,) cuyo alias ser Nombres, el email donde su inicial este en mayscula y
todos posean el dominio de @eisi.ues.edu.sv, es decir debe ir concatenado con ese dominio cuyo alias es email, adems
que aparezca si el nmero telefnico est almacenado en el campo de esta manera 515.123.4567 deber convertirlo al
formato siguiente formato (515)-123-4567, si posee un nmero telefnico con esta longitud 011.44.1344.429268, es decir
una longitud mayor al formato anterior, deber aparecer en el formato siguiente (011-44 -1344-429268- Funciones que
puede hacer uso para este ejercicio LENGTH, SUBSTR. Dicha informacin deber ir ordenada por cdigo de empleado.
select EMPLEADO_ID Codigo, APELLIDO||, ||PRIMER_NOMBRE Nombres, Initcap(email)||@eisi.ues.edu.sv email,
(||substr(TELEFONO,1,3)||) - ||substr(TELEFONO,5,3)|| - ||substr(TELEFONO,9,4) Telefono
from EMPLEADOS
where length(TELEFONO)<=12
UNION
select EMPLEADO_ID Codigo, APELLIDO||, ||PRIMER_NOMBRE Nombres, Initcap(email)||@eisi.ues.edu.sv email,
(||substr(TELEFONO,1,3)||) - ||substr(TELEFONO,5,2)|| - ||substr(TELEFONO,8,4)|| - ||substr(TELEFONO,13,6)
Telefono
from EMPLEADOS
where length(TELEFONO)>12 order by 1;
20. Desarrolle una consulta que permita seleccionar las ciudades, su cdigo de pas, y si es de Reino Unido (United
Kingdom) lo cambia por (UNKing) caso contrario si no es de Reino Unido (Non- UNKing) y cuya ciudades deben iniciar
con la letra S.
select CIUDAD, PAIS_ID, (case
when PAIS_ID in (
select PAIS_ID
from PAISES
where PAIS_NOMBRE = United Kingdom) then

UNKing
else Non- UNKing
end) as UNKing?
from LOCALIDADES
where CIUDAD like S%;
21. Desarrolle una consulta que muestre el cdigo del departamento con titulo Cdigo del departamento, que cuente los
empleados agrupados por departamentos, ordenados por cdigo de departamento;
select DEPARTAMENTO_ID Codigo del Departamento, count(*) Numero de Empleados
from EMPLEADOS
group by DEPARTAMENTO_ID order by 2;
22. Realic una consulta que muestre solo los nombres de los empleados que se repiten.
select PRIMER_NOMBRE
from EMPLEADOS
group by PRIMER_NOMBRE
having count(*)>1;
23. Desarrolle una consulta que muestre solo los nombres de los empleados que no se repiten.
select PRIMER_NOMBRE
from EMPLEADOS
group by PRIMER_NOMBRE
having count(*)=1;
24. Realice una consulta que muestre el nmero de pases por regin, la consulta debe mostrar el cdigo y nombre de la
regin as como el nmero de pases de cada regin, ordenando el resultado por la regin que tenga mayor nmero de
pases.
select r.REGION_ID, REGION_NOMBRE, count(*)
from REGIONES r, PAISES c
where r.REGION_ID=c.REGION_ID
group by r.REGION_ID,REGION_NOMBRE order by 3 desc;
25. Desarrolle una consulta que liste los cdigos de puestos con el nmero de empleados que pertenecen a cada puesto,
ordenados por nmero de empleados: los puestos que tienen ms empleados aparecen primero.
select j.TRABAJO_ID, count(*) numero
from EMPLEADOS e,TRABAJOS j
where e.TRABAJO_ID=j.TRABAJO_ID
group by j.TRABAJO_ID order by 2 desc;
26. Desarrolle una consulta que muestre el nmero de empleados por departamento, ordenados alfabticamente por nombre
de departamento.
select d.DEPARTAMENTO_ID, NOMBRE_DEPARTAMENTO, count(*)
from EMPLEADOS e,DEPARTAMENTOS d
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
group by d.DEPARTAMENTO_ID,NOMBRE_DEPARTAMENTO
order by NOMBRE_DEPARTAMENTO;
27. Realice una consulta que muestre el nmero de departamentos por regin.
select r.REGION_ID, count(*)
from DEPARTAMENTOS d, LOCALIDADES l, PAISES c, REGIONES r
where d.LOCALIDAD_ID=l.LOCALIDAD_ID
and l.PAIS_ID=c.PAIS_ID
and c.REGION_ID=r.REGION_ID
group by r.REGION_ID
order by 1 asc;
28. Realice una consulta que muestre el salario que paga cada departamento (sin incluir comisin), ordenado
descendentemente por salario pagado. Se mostrara el cdigo y nombre del departamento y el salario que paga.
select d.DEPARTAMENTO_ID, NOMBRE_DEPARTAMENTO, sum(SALARIO)

from EMPLEADOS e,DEPARTAMENTOS d


where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
group by d.DEPARTAMENTO_ID,NOMBRE_DEPARTAMENTO
order by 3 desc;

29. Desarrolle una consulta que muestre el ao de contratacin, el salario menor, mayor y promedio de todos los empleados
por ao de contratacin. Ordene el resultado por ao de contratacin: Los ms recientes primero.
select extract(year from FECHA_CONTRATACION), min(SALARIO), max(SALARIO), avg(SALARIO)
from EMPLEADOS
group by extract(year from FECHA_CONTRATACION)
order by 1 desc;
30. Desarrolle una consulta que muestre el cdigo del departamento con titulo Cdigo del Departamento, El cdigo del
trabajo con titulo Puesto de trabajo y que cuente los empleados de los departamentos 50 y 80, ordenado el resultado
por departamento y puesto de trabajo.
select d.DEPARTAMENTO_ID Codigo del Departamento, j.TRABAJO_ID Puesto de Trabajo, count(*)
from DEPARTAMENTOS d,TRABAJOS j,EMPLEADOS e
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and e.TRABAJO_ID=j.TRABAJO_ID
and d.DEPARTAMENTO_ID in (50,80)
group by d.DEPARTAMENTO_ID,j.TRABAJO_ID
order by d.DEPARTAMENTO_ID desc ,j.TRABAJO_ID desc;
31. Desarrolle una consulta que liste el cdigo del departamento con titulo Cdigo del departamento, el cdigo de trabajo
con titulo Puesto de Trabajo y que cuente los empleados por departamentos y puesto de trabajo, en donde el puesto de
trabajo tenga solamente un empleado en la empresa.
select DEPARTAMENTO_ID Codigo del Departamento, TRABAJO_ID Puesto de Trabajo, count(*)
from EMPLEADOS
group by DEPARTAMENTO_ID,TRABAJO_ID
having count(*)=1;
32. Realice una consulta que liste el nmero de empleados por ciudad, que ganan como mnimo 5000 en concepto de
salario. Omita las ciudades que tengan menos de 3 empleados con ese salario.
select CIUDAD, count(*)
from EMPLEADOS e,DEPARTAMENTOS d,LOCALIDADES l
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and d.LOCALIDAD_ID=l.LOCALIDAD_ID
and SALARIO >=5000
group by CIUDAD
having count(*)>3;
33. Elabore una consulta que muestre el cdigo del departamento con titulo Cdigo del departamento, que cuente los
empleados por departamento de aquellos departamentos que tengan ms de 10 empleados.
select DEPARTAMENTO_ID Codigo del Departamento, count(*)
from EMPLEADOS
group by DEPARTAMENTO_ID
having count(*)>10;
34. Desarrolle una consulta que liste el apellido, el nombre y salario del empleado con el salario mayor de los todos los
departamentos.
select APELLIDO, PRIMER_NOMBRE, SALARIO
from EMPLEADOS
where SALARIO = (select max(SALARIO) from EMPLEADOS);
35. Desarrolle una consulta que muestre cdigo de departamento, el nombre y apellido de los empleados de nicamente de
los departamentos en donde existen empleados con nombre Jonh
select NOMBRE_DEPARTAMENTO, PRIMER_NOMBRE, APELLIDO
from EMPLEADOS e,DEPARTAMENTOS d

where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and d.DEPARTAMENTO_ID in (select DEPARTAMENTO_ID from EMPLEADOS where PRIMER_NOMBRE = John);
36. Desarrolle una consulta que liste el cdigo de departamento, nombre, apellido y salario de nicamente de los empleados
con mximo salario en cada departamento.
select DEPARTAMENTO_ID, PRIMER_NOMBRE, APELLIDO, SALARIO
from EMPLEADOS e1
where
SALARIO
=
(select
max(SALARIO)
from
e1.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID);

EMPLEADOS

e2

where

37. Elabore una consulta que muestre el cdigo del departamento, el nombre de departamento y el salario mximo de cada
departamento.
select d.DEPARTAMENTO_ID, NOMBRE_DEPARTAMENTO, SALARIO
from DEPARTAMENTOS d,EMPLEADOS e
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_ID
and
SALARIO=(select
max(SALARIO)
from
EMPLEADOS
e2
where
e.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID);
38. Encuentra todos los registros en la tabla empleados que contengan un valor que ocurre dos veces en una columna dada.
select *
from EMPLEADOS e1
where 2 = ( select count(*) from EMPLEADOS e2 where e1.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID);
39. Realice una consulta que liste los empleados que estn en departamentos que tienen menos de 10 empleados.
select DEPARTAMENTO_ID, PRIMER_NOMBRE|| ||APELLIDO
from EMPLEADOS e1
where (select count(*) from EMPLEADOS e2 where e1.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID)<10 order by
DEPARTAMENTO_ID;
40. Desarrolle una consulta que muestre el mayor salario entre los empleados que trabajan en el departamento 30
(DEPARTAMENTO_ID) y que empleados ganan ese salario.
select DEPARTAMENTO_ID, PRIMER_NOMBRE|| ||APELLIDO, SALARIO
from EMPLEADOS
where DEPARTAMENTO_ID =30
and SALARIO= (select max(SALARIO) from EMPLEADOS where DEPARTAMENTO_ID=30);
41. Elabore una consulta que muestre los departamentos en donde no exista ningn empleado.
select DEPARTAMENTO_ID, NOMBRE_DEPARTAMENTO
from DEPARTAMENTOS d
where not exists (select * from EMPLEADOS e where e.DEPARTAMENTO_ID=DEPARTAMENTO_ID);
42. Desarrolle una consulta que muestre a todos los empleados que no estn trabajando en el departamento 30 y que ganen
ms que todos los empleados que trabajan en el departamento 30.
select PRIMER_NOMBRE, APELLIDO
from EMPLEADOS
where DEPARTAMENTO_ID <> 30
and SALARIO > all (select SALARIO from EMPLEADOS where DEPARTAMENTO_ID=30);
43. Realice una consulta que muestre los empleados que son gerentes (GERENTE_ID) y el nmero de empleados
subordinados a cada uno, ordenados descendentemente por nmero de subordinado. Excluya a los gerentes que tienen
5 empleados subordinados o menos.
select e1.EMPLEADO_ID, e1.PRIMER_NOMBRE|| ||e1.APELLIDO, count(*)
from EMPLEADOS e1,EMPLEADOS e2
where e2.GERENTE_ID=e1.EMPLEADO_ID
and e2.GERENTE_ID in (select d.GERENTE_ID from DEPARTAMENTOS d where d.GERENTE_ID is not null)
and (select count(*)
from EMPLEADOS e3, EMPLEADOS e4
where e3.GERENTE_ID=e4.EMPLEADO_ID

and e3.GERENTE_ID=e1.EMPLEADO_ID)>5
group by e1.EMPLEADO_ID,e1.PRIMER_NOMBRE|| ||e1.APELLIDO;
44. Desarrolle una consulta donde muestre el cdigo de empleado, el apellido, salario, nombre de regin, nombre de pas,
estado de la provincia , cdigo de departamento, nombre de departamento donde cumpla las siguientes condiciones:
a. Que los empleados que seleccione su salario sea mayor al promedio de su departamento.
b. Que no seleccione los del estado de la provincia de Texas
c. Que ordene la informacin por cdigo de empleado ascendentemente.
d. Que no escoja los del departamento de finanzas (Finance)
select a.EMPLEADO_ID, a.APELLIDO ,a.SALARIO, b.REGION_NOMBRE , c.PAIS_NOMBRE, d.PROVINCIA,
e.DEPARTAMENTO_ID, e.NOMBRE_DEPARTAMENTO
from EMPLEADOS a, REGIONES b, PAISES c, LOCALIDADES d, DEPARTAMENTOS e
where a.DEPARTAMENTO_ID = e.DEPARTAMENTO_ID
and e.LOCALIDAD_ID = d.LOCALIDAD_ID
and d.PAIS_ID = c.PAIS_ID
and c.REGION_ID = b.REGION_ID
and a. SALARIO > (select avg(SALARIO)
from EMPLEADOS g
where a.DEPARTAMENTO_ID = g.DEPARTAMENTO_ID)
and d.PROVINCIA <> Texas
and e.NOMBRE_DEPARTAMENTO<> Finance
order by a.EMPLEADO_ID;

You might also like