Diferencia entre revisiones de «Usuario:ManuelRomero/Img»
De WikiEducator
(Página creada con «===Imagen de la solución de cada ejercicio === ;Ejercicio 1 Archivo:ex_1.png <br /> ;Ejercicio 2 Archivo:ex_2.png <br /> ;Ejercicio 3 Archivo:ex_3.png <br /> ;...») |
|||
| (5 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 | ||
| − | [[Archivo: | + | 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]] | ||
<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 18:07 22 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

















