Oracle Consultas en SQL HR | Ejercicios Resueltos






Para esta nueva ocasión le quiero compartir una serie de ejercicios resueltos de sql en Oracle con el esquema hr totalmente en español y actualizado para este 2020.

subconsultas sql ejercicios resueltos

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




Descubre más sobre:



4 Comentarios

  1. Se requiere saber cuáles son los cargos vacantes del departamento, realice una consulta mediante la cual muestre el nombre del departamento y el nombre completo del empleado asignado como manager, en el caso de que el departamento no tenga un manager_id asignado entonces debe mostrar la información como ‘VACANTE’

    ResponderBorrar
  2. select nombre ||''|| apellido as nombre completo, dp_nombre as nombre de departamento, cargo as vacante from departamento

    ResponderBorrar
  3. hola necito ayuda porfavor

    ResponderBorrar
  4. Necesito saber cómo realizar el siguiente ejercicio:
    Se requiere saber cuáles son los departamentos que tienen algún trabajador
    asignado en la gerencia y cuales aún tienen el cargo vacante, por lo mismo, se
    solicita que realice una consulta mediante la cual muestre el nombre del
    departamento y el nombre completo del empleado asignado como JEFE
    (manager), en el caso de que el departamento no tenga un manager_id asignado
    entonces debe mostrar la información como ‘VACANTE’, despliegue los datos en
    el siguiente formato. Actualmente no me permite concatener el nombre estoy utilizando un NLV

    ResponderBorrar