Usuario:ManuelRomero/Img
De WikiEducator
Imagen de la solución de cada ejercicio
- Ejercicio 1
Obtener el nombre y salarios de todos los empleados que cobren más de 5000 euros y su nombre tenga contenga la letra a.
SELECT first_name, salary FROM employees WHERE salary > 5000 AND last_name LIKE '%a%'
- Ejercicio 2
Haz una consulta para visualizar los puestos de los departamentos 10 y 20.
SELECT job_id FROM employees WHERE DEPARTMENT_ID IN (10,20)
- Ejercicio 3
Muestre los empleados cuyo apellido empiece por las letras "J", "K", "L" o "M".
SELECT last_name FROM employees WHERE substr(last_name,0,1) IN ('J','L','M','K')
- Ejercicio 4
Obtener todos los trabajos realizados , que están en la tabla job_history, que se hayan realizado durante más de 2 años
SELECT job_id, trunc((end_date - start_date)/365) AS "periodo trabajado" FROM job_history WHERE (end_date - start_date)/365 > 2
- Ejercicio 5
Obtener el nombre y salario de todos los empleados que cobren mas de 1200 dólares.
SELECT first_name , salary FROM employees WHERE salary > 1200
- Ejercicio 6
Obtener el nombre y edad de todos los empleados
SELECT first_name, trunc((sysdate-hire_date)/365) AS "Años trabajados" FROM employees
- Ejercicio 7
Obtener el nombre y apellido de todos los empleados que su apellido acabe por una vocal.
SELECT first_name,LOWER(substr(last_name,-1,1)) FROM employees WHERE LOWER(substr(first_name,-1,1)) IN ('a','e','i' ,'o','u')
- Ejercicio 8
El departamento de recursos humanos necesita obtener los datos de todos los oficinistas que se contrataron después del año 1997.
SELECT * FROM employees WHERE job_id ='ST_CLERK' AND to_char(hire_date,'YYYY') > 1997
- Ejercicio 9
Los tipos de trabajo que tengan más de 2000 euros de diferencia entre el sueldo mayor y el sueldo menor
SELECT job_title, (max_salary - min_salary) AS diferencia FROM jobs WHERE max_salary - min_salary > 2000
- Ejercicio 10
Se quiere saber el nombre, trabajo, y salario de los empleados. Pero solo de aquellos empleados que reciben comisión
SELECT last_name, job_id , salary FROM employees WHERE commission_pct IS NOT NULL
- Ejercicio 11
Se quiere saber los nombres y apellidos de los empleados, junto con el tiempo que dura sus contratos. De ese tiempo se quiere saber años completos realizados.
- Ejercicio 12
Se quiere obtener un informe con los oficinistas (JOB_ID = 'ST_CLERK') que se contrataron después del año 1997
SELECT last_name, first_name FROM employees WHERE job_id = 'ST_CLERK' AND to_char(hire_date,'yyyy')> 1997
- Ejercicio 13
Obtener todos los departamentos donde haya más de 4 trabajadores
FROM employees GROUP BY department_id HAVING COUNT(*)>2
- Ejercicio 14
Completa la consulta anterior, solo para aquellos departamentos cuyo numero de identificador sea mayor que 50
SELECT department_id FROM employees WHERE department_id > 50 GROUP BY department_id HAVING COUNT(*)>2
- Ejercicio 15
Obtener un listado con el nombre del departamento, número de empleados que tiene y salario medio que se cobra en ese departamentos
SELECT department_id, COUNT(*)AS "empleados", round(avg(salary)) AS "salario medio" FROM employees WHERE department_id IS NOT NULL GROUP BY department_id
- Ejercicio 16
Mostrar los departamentos (número ) en los que no haya ningún vendedor (vendedor queda identificado por el JOB_ID ‘SA_REP’
SELECT department_id FROM employees WHERE department_id NOT IN (SELECT department_id FROM employees WHERE job_id = 'SA_REP' AND department_id IS NOT NULL)
- Ejercicio 18
Obtener los departamentos en los que no haya ningún empleado trabajando como vendedor. Se desea ver el número y nombre de departamento, así como la ubicación. El trabajo de vendedor viene especificado con el job_id SA_REP
SELECT d.department_id, department_name, location_id FROM employees e , DEPARTMENTS d WHERE e.department_id = d.department_id AND e.department_id NOT IN (SELECT department_id FROM employees WHERE job_id = 'SA_REP' AND department_id IS NOT NULL)
- diagrama e/r