Usuario:ManuelRomero/Img

De WikiEducator
Saltar a: navegación, buscar

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%'

Ex 1.png

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)

Ex 22.png

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

Ex 333.png

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

Ex 4.png

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

Ex 5.png

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

Ex 6.png

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

Ex 7.png

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

Ex 8.png

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

Ex 9.png

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

Ex 10.png

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. 
 

Ex 11.png

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

Ex 12.png

Ejercicio 13
Obtener todos los departamentos 
donde haya más de 4 trabajadores
FROM employees
GROUP BY department_id
HAVING COUNT(*)>2

select department_id Ex 13.png

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

Ex 14.png

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

Ex 15.png

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)

Ex 16.png

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)

Ex 18b.png

diagrama e/r

Ex er.png