Diferencia entre revisiones de «Usuario:ManuelRomero/Img»
De WikiEducator
(→Imagen de la solución de cada ejercicio) |
|||
(4 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
===Imagen de la solución de cada ejercicio === | ===Imagen de la solución de cada ejercicio === | ||
;Ejercicio 1 | ;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. | ||
+ | |||
+ | <source lang=sql> | ||
+ | select first_name, salary | ||
+ | from employees | ||
+ | where salary > 5000 | ||
+ | and last_name like '%a%' | ||
+ | </source > | ||
+ | |||
[[Archivo:ex_1.png]] | [[Archivo:ex_1.png]] | ||
<br /> | <br /> | ||
;Ejercicio 2 | ;Ejercicio 2 | ||
+ | Haz una consulta para visualizar | ||
+ | los puestos de los departamentos | ||
+ | 10 y 20. | ||
+ | <source lang=sql> | ||
+ | select job_id | ||
+ | from employees | ||
+ | where DEPARTMENT_ID in (10,20) | ||
+ | </source> | ||
[[Archivo:ex_22.png]] | [[Archivo:ex_22.png]] | ||
<br /> | <br /> | ||
;Ejercicio 3 | ;Ejercicio 3 | ||
− | [[Archivo: | + | Muestre los empleados cuyo apellido |
+ | empiece por las letras "J", "K", | ||
+ | "L" o "M". | ||
+ | <source lang=sql> | ||
+ | select last_name | ||
+ | from employees | ||
+ | where substr(last_name,0,1) in ('J','L','M','K') | ||
+ | </source> | ||
+ | [[Archivo:ex_333.png]] | ||
<br /> | <br /> | ||
;Ejercicio 4 | ;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 | ||
+ | <source lang=sql> | ||
+ | select job_id, trunc((end_date - start_date)/365) as "periodo trabajado" | ||
+ | from job_history | ||
+ | where (end_date - start_date)/365 > 2 | ||
+ | </source> | ||
[[Archivo:ex_4.png]] | [[Archivo:ex_4.png]] | ||
<br /> | <br /> | ||
;Ejercicio 5 | ;Ejercicio 5 | ||
+ | Obtener el nombre y salario de todos | ||
+ | los empleados que cobren mas de | ||
+ | 1200 dólares. | ||
+ | <source lang=sql> | ||
+ | select first_name , salary | ||
+ | from employees | ||
+ | where salary > 1200 | ||
+ | </source> | ||
[[Archivo:ex_5.png]] | [[Archivo:ex_5.png]] | ||
<br /> | <br /> | ||
;Ejercicio 6 | ;Ejercicio 6 | ||
+ | Obtener el nombre y edad | ||
+ | de todos los empleados | ||
+ | <source lang=sql> | ||
+ | select first_name, trunc((sysdate-hire_date)/365) as "Años trabajados" | ||
+ | from employees | ||
+ | </source> | ||
[[Archivo:ex_6.png]] | [[Archivo:ex_6.png]] | ||
<br /> | <br /> | ||
;Ejercicio 7 | ;Ejercicio 7 | ||
+ | Obtener el nombre y apellido de | ||
+ | todos los empleados que su | ||
+ | apellido acabe por una vocal. | ||
+ | <source lang=sql> | ||
+ | select first_name,lower(substr(last_name,-1,1)) | ||
+ | from employees | ||
+ | where lower(substr(first_name,-1,1)) in ('a','e','i' ,'o','u') | ||
+ | </source> | ||
[[Archivo:ex_7.png]] | [[Archivo:ex_7.png]] | ||
<br /> | <br /> | ||
;Ejercicio 8 | ;Ejercicio 8 | ||
+ | El departamento de recursos humanos | ||
+ | necesita obtener los datos de todos | ||
+ | los oficinistas que se contrataron | ||
+ | después del año 1997. | ||
+ | <source lang=sql> | ||
+ | select * | ||
+ | from employees | ||
+ | where job_id ='ST_CLERK' | ||
+ | and | ||
+ | to_char(hire_date,'YYYY') > 1997 | ||
+ | </source> | ||
[[Archivo:ex_8.png]] | [[Archivo:ex_8.png]] | ||
<br /> | <br /> | ||
;Ejercicio 9 | ;Ejercicio 9 | ||
+ | Los tipos de trabajo que tengan más | ||
+ | de 2000 euros de diferencia entre | ||
+ | el sueldo mayor y el sueldo menor | ||
+ | <source lang=sql> | ||
+ | select job_title, (max_salary - min_salary) as diferencia | ||
+ | from jobs | ||
+ | where max_salary - min_salary > 2000 | ||
+ | |||
+ | </source> | ||
[[Archivo:ex_9.png]] | [[Archivo:ex_9.png]] | ||
<br /> | <br /> | ||
;Ejercicio 10 | ;Ejercicio 10 | ||
+ | Se quiere saber el nombre, trabajo, | ||
+ | y salario de los empleados. | ||
+ | Pero solo de aquellos empleados | ||
+ | que reciben comisión | ||
+ | <source lang=sql> | ||
+ | select last_name, job_id , salary | ||
+ | from employees | ||
+ | where commission_pct is not null | ||
+ | </source> | ||
[[Archivo:ex_10.png]] | [[Archivo:ex_10.png]] | ||
<br /> | <br /> | ||
;Ejercicio 11 | ;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. | ||
+ | <source lang=sql> | ||
+ | |||
+ | </source> | ||
[[Archivo:ex_11.png]] | [[Archivo:ex_11.png]] | ||
<br /> | <br /> | ||
;Ejercicio 12 | ;Ejercicio 12 | ||
+ | Se quiere obtener un informe | ||
+ | con los oficinistas (JOB_ID = 'ST_CLERK') | ||
+ | que se contrataron después del año 1997 | ||
+ | <source lang=sql> | ||
+ | select last_name, first_name | ||
+ | from employees | ||
+ | where job_id = 'ST_CLERK' | ||
+ | and | ||
+ | to_char(hire_date,'yyyy')> 1997 | ||
+ | </source> | ||
[[Archivo:ex_12.png]] | [[Archivo:ex_12.png]] | ||
<br /> | <br /> | ||
;Ejercicio 13 | ;Ejercicio 13 | ||
+ | Obtener todos los departamentos | ||
+ | donde haya más de 4 trabajadores | ||
+ | <source lang=sql> | ||
+ | from employees | ||
+ | group by department_id | ||
+ | having count(*)>2 | ||
+ | </source> | ||
+ | select department_id | ||
[[Archivo:ex_13.png]] | [[Archivo:ex_13.png]] | ||
<br /> | <br /> | ||
;Ejercicio 14 | ;Ejercicio 14 | ||
+ | Completa la consulta anterior, | ||
+ | solo para aquellos departamentos | ||
+ | cuyo numero de identificador | ||
+ | sea mayor que 50 | ||
+ | <source lang=sql> | ||
+ | select department_id | ||
+ | from employees | ||
+ | where department_id > 50 | ||
+ | group by department_id | ||
+ | having count(*)>2 | ||
+ | </source> | ||
[[Archivo:ex_14.png]] | [[Archivo:ex_14.png]] | ||
<br /> | <br /> | ||
;Ejercicio 15 | ;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 | ||
+ | <source lang=sql> | ||
+ | select department_id, count(*)as "empleados", round(avg(salary)) as "salario medio" | ||
+ | from employees | ||
+ | where department_id is not null | ||
+ | group by department_id | ||
+ | |||
+ | </source> | ||
[[Archivo:ex_15.png]] | [[Archivo:ex_15.png]] | ||
<br /> | <br /> | ||
;Ejercicio 16 | ;Ejercicio 16 | ||
+ | Mostrar los departamentos (número ) | ||
+ | en los que no haya ningún vendedor | ||
+ | (vendedor queda identificado por | ||
+ | el JOB_ID ‘SA_REP’ | ||
+ | <source lang=sql> | ||
+ | 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) | ||
+ | </source> | ||
[[Archivo:ex_16.png]] | [[Archivo:ex_16.png]] | ||
<br /> | <br /> | ||
;Ejercicio 18 | ;Ejercicio 18 | ||
− | [[Archivo: | + | 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 | ||
+ | <source lang=sql> | ||
+ | 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) | ||
+ | </source> | ||
+ | [[Archivo:ex_18b.png]] | ||
<br /> | <br /> | ||
+ | |||
+ | ;diagrama e/r | ||
+ | [[Archivo:ex_er.png]] |
Última revisión de 06:07 23 may 2018
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