0% encontró este documento útil (0 votos)
2K vistas13 páginas

Consultas SQL en Oracle Ejercicios Resueltos

El documento contiene ejemplos de consultas SQL en Oracle para unir y relacionar datos entre múltiples tablas. Las consultas muestran cómo unir tablas de empleados, departamentos, regiones y países para obtener información como los nombres y cargos de los empleados, los departamentos a los que pertenecen, los países y ciudades de una región dada, y los empleados cuyos salarios superan el promedio de su departamento.

Cargado por

KamiloKuevas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2K vistas13 páginas

Consultas SQL en Oracle Ejercicios Resueltos

El documento contiene ejemplos de consultas SQL en Oracle para unir y relacionar datos entre múltiples tablas. Las consultas muestran cómo unir tablas de empleados, departamentos, regiones y países para obtener información como los nombres y cargos de los empleados, los departamentos a los que pertenecen, los países y ciudades de una región dada, y los empleados cuyos salarios superan el promedio de su departamento.

Cargado por

KamiloKuevas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Consultas SQL en Oracle ejercicios resueltos

1. Mostrar los nombres y apellidos de todos los empleados con su respectivo


nombre de cargo que desempeñan.

SELECT FIRST_NAME,LAST_NAME,JOB_TITLE
FROM HR.EMPLOYEES JOIN HR.JOBS ON
(HR.JOBS.JOB_ID=HR.EMPLOYEES.JOB_ID)

SELECT FIRST_NAME,LAST_NAME,JOB_TITLE
FROM HR.EMPLOYEES E, HR.JOBS J
WHERE E.JOB_ID=J.JOB_ID

consulta sql dos tablas relacionadas


2. Mostrar los nombres y apellidos de todos los empleados con su respectivo
nombre del departamento al cual pertenecen.

SELECT FIRST_NAME, LAST_NAME,DEPARTMENT_NAME


FROM HR.EMPLOYEES E JOIN HR.DEPARTMENTS D ON
(D.DEPARTMENT_ID=E.DEPARTMENT_ID)

SELECT FIRST_NAME, LAST_NAME,DEPARTMENT_NAME


FROM HR.EMPLOYEES E, HR.DEPARTMENTS D
WHERE E.DEPARTMENT_ID=D.DEPARTMENT_ID

unir dos consultas con diferentes campos sql


3. Mostrar los nombres de todas las regiones con sus respectivos nombres de
países ordenados por nombre de región.

SELECT REGION_NAME ,COUNTRY_NAME


FROM HR.REGIONS R JOIN HR.COUNTRIES C ON (R.REGION_ID=C.REGION_ID)
ORDER BY REGION_NAME

4. Mostrar los nombres de todas las regiones con sus respectivos nombres de
países ordenados por nombre de región y por nombre de país.
SELECT REGION_NAME ,COUNTRY_NAME
FROM HR.REGIONS R JOIN HR.COUNTRIES C ON (R.REGION_ID=C.REGION_ID)
ORDER BY REGION_NAME,COUNTRY_NAME

combinar dos tablas oracle


5. Realice una consulta que muestres el código de la región, nombre de la región
y el nombre de los países que se encuentran en Asia.

SELECT R.REGION_ID, REGION_NAME ,COUNTRY_NAME


FROM HR.REGIONS R JOIN HR.COUNTRIES C ON (R.REGION_ID=C.REGION_ID)
WHERE REGION_NAME='Asia'

6. Mostrar los nombres y apellidos de todos los empleados con su respectivo


nombre del departamento al cual pertenecen de aquellos cuya fecha de contrato
este entre '10/06/2005' and '16/07/2006'

SELECT FIRST_NAME, LAST_NAME,DEPARTMENT_NAME


FROM HR.EMPLOYEES E JOIN HR.DEPARTMENTS D ON
(D.DEPARTMENT_ID=E.DEPARTMENT_ID)
WHERE HIRE_DATE BETWEEN '10/06/2005' and '16/07/2006'

consultar y unir 3 tablas sql


7. Mostrar los nombres de las regiones, con los nombres de países que tiene así
como el nombre de las ciudades y la dirección de las calles, ordenados en forma
ascendente por el nombre de región y en forma descendente por el nombre del
país

SELECT REGION_NAME ,COUNTRY_NAME,CITY,STREET_ADDRESS


FROM HR.REGIONS R,HR.COUNTRIES C,HR.LOCATIONS L
WHERE R.REGION_ID = C.REGION_ID AND L.COUNTRY_ID = C.COUNTRY_ID
ORDER BY 1,2 DESC
8. Elabore una consulta que liste nombre del trabajo y el salario de los empleados
que son manager, cuyo código es 100 o 125 y cuyo salario sea mayor de 6000.

SELECT JOB_TITLE, SALARY


FROM HR.JOBS J, HR.EMPLOYEES E
WHERE E.JOB_ID=J.JOB_ID AND JOB_TITLE like '%Manager%' and Manager_id
in
(100,125) and salary >6000

9. Desarrolle una consulta que liste el código de la localidad, la ciudad y el


nombre del departamento de únicamente de los que se encuentran fuera de
estados unidos (US).

SELECT L.LOCATION_ID, CITY, DEPARTMENT_NAME


FROM HR.LOCATIONS L, HR.DEPARTMENTS D,HR.COUNTRIES C
WHERE L.LOCATION_ID = D.LOCATION_ID AND C.COUNTRY_ID = L.COUNTRY_ID
AND
COUNTRY_NAME <>'United States of America';

10. Realice una consulta que muestre el nombre y apellido de los empleados que
trabajan para departamentos que están localizados en países cuyo nombre
comienza con la letra C, que muestre el nombre del país.

SELECT FIRST_NAME, LAST_NAME, COUNTRY_NAME


FROM HR.EMPLOYEES E, HR.DEPARTMENTS D, HR.LOCATIONS L, HR.COUNTRIES
C
WHERE D.DEPARTMENT_ID=E.DEPARTMENT_ID AND
D.LOCATION_ID=L.LOCATION_ID AND
L.COUNTRY_ID=C.COUNTRY_ID
AND COUNTRY_NAME LIKE 'C%'

consultas oracle avanzadas


11. Mostrar la cantidad de empleados

select count (*) from hr.employees;'


12. Mostrar la cantidad de paises que no se repitan

select count (DISTINCT country_name) from hr.countries;

13. Mostrar el mayor y el menor salario de los empleados

Select max (salary) as Salario_maximo, min (salary) as Salario_Minimo


from
hr.employees;

Select dentro de otro select oracle


14. Mostrar el nombre y apellido del empleado que tenga el sueldo maximo

select FIRST_NAME, LAST_NAME, SALARY


from hr.employees
where salary = (select max (salary) as Salario_maximo from
hr.employees)

Subconsultas Oracle SQL


16. Cuantos empleados tienen un salario mayor al salario promedio

select count (*) as cantidad from ( select last_name


from hr.employees where salary >( select avg (salary)
from hr.employees))
where e.DEPARTAMENTO_ID=d.DEPARTAMENTO_IDand d.DEPARTAMENTO_ID
in (select DEPARTAMENTO_ID from EMPLEADOS where PRIMER_NOMBRE =
‘John’);36. Desarrolle una consulta que liste el código de departamento, nombre, apellido y
salario de únicamente de los empleadoscon máximo salario en cada departamento.select
DEPARTAMENTO_ID, PRIMER_NOMBRE, APELLIDO, SALARIOfrom
EMPLEADOS e1where SALARIO = (select max(SALARIO) from EMPLEADOS e2
wheree1.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID);37. Elabore una consulta
que muestre el código del departamento, el nombre de departamento y el salario máximo de
cadadepartamento.select d.DEPARTAMENTO_ID, NOMBRE_DEPARTAMENTO,
SALARIOfrom DEPARTAMENTOS d,EMPLEADOS ewhere
e.DEPARTAMENTO_ID=d.DEPARTAMENTO_IDand SALARIO=(select
max(SALARIO) from EMPLEADOS e2
wheree.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 e1where 2 = ( select count(*) from
EMPLEADOS e2 where e1.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID);39.
Realice una consulta que liste los empleados que están en departamentos que tienen menos
de 10 empleados.select DEPARTAMENTO_ID, PRIMER_NOMBRE||’ ‘||APELLIDOfrom
EMPLEADOS e1where (select count(*) from EMPLEADOS e2 where
e1.DEPARTAMENTO_ID=e2.DEPARTAMENTO_ID)<10 order
byDEPARTAMENTO_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, SALARIOfrom
EMPLEADOSwhere DEPARTAMENTO_ID =30and SALARIO= (select max(SALARIO)
from EMPLEADOS where DEPARTAMENTO_ID=30);41. Elabore una consulta que
muestre los departamentos en donde no exista ningún empleado.select
DEPARTAMENTO_ID, NOMBRE_DEPARTAMENTOfrom DEPARTAMENTOS
dwhere not exists (select * from EMPLEADOS e where
e.DEPARTAMENTO_ID=DEPARTAMENTO_ID);42. Desarrolle una consulta que
muestre a todos los empleados que no estén trabajando en el departamento 30 y que
ganenmás que todos los empleados que trabajan en el departamento 30.select
PRIMER_NOMBRE, APELLIDOfrom EMPLEADOSwhere DEPARTAMENTO_ID <>
30and 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 número de empleadossubordinados a cada
uno, ordenados descendentemente por número de subordinado. Excluya a los gerentes que
tienen5 empleados subordinados o menos.select e1.EMPLEADO_ID,
e1.PRIMER_NOMBRE||’ ‘||e1.APELLIDO, count(*)from EMPLEADOS
e1,EMPLEADOS e2where e2.GERENTE_ID=e1.EMPLEADO_IDand 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)>5group by
e1.EMPLEADO_ID,e1.PRIMER_NOMBRE||’ ‘||e1.APELLIDO;44. Desarrolle una
consulta donde muestre el código de empleado, el apellido, salario, nombre de región,
nombre de país,estado de la provincia , código 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 Texasc. Que ordene la información por código 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_DEPARTAMENTOfrom
EMPLEADOS a, REGIONES b, PAISES c, LOCALIDADES d, DEPARTAMENTOS
ewhere a.DEPARTAMENTO_ID = e.DEPARTAMENTO_IDand e.LOCALIDAD_ID =
d.LOCALIDAD_IDand d.PAIS_ID = c.PAIS_IDand c.REGION_ID = b.REGION_IDand
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;

where
e.DEPARTAMENTO_ID=d.DEPA
RTAMENTO_ID
and d.DEPARTAMENTO_ID in
(select DEPARTAMENTO_ID
from EMPLEADOS where
PRIMER_NOMBRE = ‘John’);
36. Desarrolle una consulta que liste
el código de departamento, nombre,
apellido y salario de únicamente de
los empleados
con máximo salario en cada
departamento.
select DEPARTAMENTO_ID,
PRIMER_NOMBRE, APELLIDO,
SALARIO
from EMPLEADOS e1
where SALARIO = (select
max(SALARIO) from
EMPLEADOS e2 where
e1.DEPARTAMENTO_ID=e2.DEP
ARTAMENTO_ID);
37. Elabore una consulta que
muestre el código del departamento,
el nombre de departamento y el
salario máximo de cada
departamento.
select d.DEPARTAMENTO_ID,
NOMBRE_DEPARTAMENTO,
SALARIO
from DEPARTAMENTOS
d,EMPLEADOS e
where
e.DEPARTAMENTO_ID=d.DEPA
RTAMENTO_ID
and SALARIO=(select
max(SALARIO) from
EMPLEADOS e2 where
e.DEPARTAMENTO_ID=e2.DEP
ARTAMENTO_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.DEP
ARTAMENTO_ID);
39. Realice una consulta que liste
los empleados que están 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.DEP
ARTAMENTO_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 ningún empleado.
select DEPARTAMENTO_ID,
NOMBRE_DEPARTAMENTO
from DEPARTAMENTOS d
where not exists (select * from
EMPLEADOS e where
e.DEPARTAMENTO_ID=DEPAR
TAMENTO_ID);
42. Desarrolle una consulta que
muestre a todos los empleados que
no estén trabajando en el
departamento 30 y que ganen
más 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
número de empleados
subordinados a cada uno, ordenados
descendentemente por número 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

También podría gustarte