Diferencia entre revisiones de «Usuario:ManuelRomero/Img»
De WikiEducator
(→Imagen de la solución de cada ejercicio) |
|||
(3 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 5: | Línea 5: | ||
y su nombre tenga contenga la letra a. | y su nombre tenga contenga la letra a. | ||
− | < | + | <source lang=sql> |
select first_name, salary | select first_name, salary | ||
from employees | from employees | ||
where salary > 5000 | where salary > 5000 | ||
and last_name like '%a%' | and last_name like '%a%' | ||
− | </source | + | </source > |
[[Archivo:ex_1.png]] | [[Archivo:ex_1.png]] | ||
Línea 18: | Línea 18: | ||
los puestos de los departamentos | los puestos de los departamentos | ||
10 y 20. | 10 y 20. | ||
− | < | + | <source lang=sql> |
select job_id | select job_id | ||
from employees | from employees | ||
where DEPARTMENT_ID in (10,20) | where DEPARTMENT_ID in (10,20) | ||
− | </source | + | </source> |
[[Archivo:ex_22.png]] | [[Archivo:ex_22.png]] | ||
<br /> | <br /> | ||
Línea 29: | Línea 29: | ||
empiece por las letras "J", "K", | empiece por las letras "J", "K", | ||
"L" o "M". | "L" o "M". | ||
− | < | + | <source lang=sql> |
select last_name | select last_name | ||
from employees | from employees | ||
where substr(last_name,0,1) in ('J','L','M','K') | where substr(last_name,0,1) in ('J','L','M','K') | ||
− | </source | + | </source> |
[[Archivo:ex_333.png]] | [[Archivo:ex_333.png]] | ||
<br /> | <br /> | ||
Línea 41: | Línea 41: | ||
que se hayan realizado durante más de | que se hayan realizado durante más de | ||
2 años | 2 años | ||
− | < | + | <source lang=sql> |
select job_id, trunc((end_date - start_date)/365) as "periodo trabajado" | select job_id, trunc((end_date - start_date)/365) as "periodo trabajado" | ||
from job_history | from job_history | ||
where (end_date - start_date)/365 > 2 | where (end_date - start_date)/365 > 2 | ||
− | </source | + | </source> |
[[Archivo:ex_4.png]] | [[Archivo:ex_4.png]] | ||
<br /> | <br /> | ||
Línea 52: | Línea 52: | ||
los empleados que cobren mas de | los empleados que cobren mas de | ||
1200 dólares. | 1200 dólares. | ||
− | < | + | <source lang=sql> |
select first_name , salary | select first_name , salary | ||
from employees | from employees | ||
where salary > 1200 | where salary > 1200 | ||
− | </source | + | </source> |
[[Archivo:ex_5.png]] | [[Archivo:ex_5.png]] | ||
<br /> | <br /> | ||
Línea 62: | Línea 62: | ||
Obtener el nombre y edad | Obtener el nombre y edad | ||
de todos los empleados | de todos los empleados | ||
− | < | + | <source lang=sql> |
select first_name, trunc((sysdate-hire_date)/365) as "Años trabajados" | select first_name, trunc((sysdate-hire_date)/365) as "Años trabajados" | ||
from employees | from employees | ||
− | </source | + | </source> |
[[Archivo:ex_6.png]] | [[Archivo:ex_6.png]] | ||
<br /> | <br /> | ||
Línea 72: | Línea 72: | ||
todos los empleados que su | todos los empleados que su | ||
apellido acabe por una vocal. | apellido acabe por una vocal. | ||
− | < | + | <source lang=sql> |
select first_name,lower(substr(last_name,-1,1)) | select first_name,lower(substr(last_name,-1,1)) | ||
from employees | from employees | ||
where lower(substr(first_name,-1,1)) in ('a','e','i' ,'o','u') | where lower(substr(first_name,-1,1)) in ('a','e','i' ,'o','u') | ||
− | </source | + | </source> |
[[Archivo:ex_7.png]] | [[Archivo:ex_7.png]] | ||
<br /> | <br /> | ||
Línea 84: | Línea 84: | ||
los oficinistas que se contrataron | los oficinistas que se contrataron | ||
después del año 1997. | después del año 1997. | ||
− | < | + | <source lang=sql> |
select * | select * | ||
from employees | from employees | ||
Línea 90: | Línea 90: | ||
and | and | ||
to_char(hire_date,'YYYY') > 1997 | to_char(hire_date,'YYYY') > 1997 | ||
− | </source | + | </source> |
[[Archivo:ex_8.png]] | [[Archivo:ex_8.png]] | ||
<br /> | <br /> | ||
Línea 97: | Línea 97: | ||
de 2000 euros de diferencia entre | de 2000 euros de diferencia entre | ||
el sueldo mayor y el sueldo menor | el sueldo mayor y el sueldo menor | ||
− | < | + | <source lang=sql> |
select job_title, (max_salary - min_salary) as diferencia | select job_title, (max_salary - min_salary) as diferencia | ||
from jobs | from jobs | ||
where max_salary - min_salary > 2000 | where max_salary - min_salary > 2000 | ||
− | </source | + | </source> |
[[Archivo:ex_9.png]] | [[Archivo:ex_9.png]] | ||
<br /> | <br /> | ||
Línea 110: | Línea 110: | ||
Pero solo de aquellos empleados | Pero solo de aquellos empleados | ||
que reciben comisión | que reciben comisión | ||
− | < | + | <source lang=sql> |
select last_name, job_id , salary | select last_name, job_id , salary | ||
from employees | from employees | ||
where commission_pct is not null | where commission_pct is not null | ||
− | </source | + | </source> |
[[Archivo:ex_10.png]] | [[Archivo:ex_10.png]] | ||
<br /> | <br /> | ||
Línea 122: | Línea 122: | ||
que dura sus contratos. De ese tiempo | que dura sus contratos. De ese tiempo | ||
se quiere saber años completos realizados. | se quiere saber años completos realizados. | ||
− | < | + | <source lang=sql> |
− | </source | + | </source> |
[[Archivo:ex_11.png]] | [[Archivo:ex_11.png]] | ||
<br /> | <br /> | ||
Línea 131: | Línea 131: | ||
con los oficinistas (JOB_ID = 'ST_CLERK') | con los oficinistas (JOB_ID = 'ST_CLERK') | ||
que se contrataron después del año 1997 | que se contrataron después del año 1997 | ||
− | < | + | <source lang=sql> |
select last_name, first_name | select last_name, first_name | ||
from employees | from employees | ||
Línea 137: | Línea 137: | ||
and | and | ||
to_char(hire_date,'yyyy')> 1997 | to_char(hire_date,'yyyy')> 1997 | ||
− | </source | + | </source> |
[[Archivo:ex_12.png]] | [[Archivo:ex_12.png]] | ||
<br /> | <br /> | ||
Línea 143: | Línea 143: | ||
Obtener todos los departamentos | Obtener todos los departamentos | ||
donde haya más de 4 trabajadores | donde haya más de 4 trabajadores | ||
− | < | + | <source lang=sql> |
from employees | from employees | ||
group by department_id | group by department_id | ||
having count(*)>2 | having count(*)>2 | ||
− | </source | + | </source> |
select department_id | select department_id | ||
[[Archivo:ex_13.png]] | [[Archivo:ex_13.png]] | ||
Línea 156: | Línea 156: | ||
cuyo numero de identificador | cuyo numero de identificador | ||
sea mayor que 50 | sea mayor que 50 | ||
− | < | + | <source lang=sql> |
select department_id | select department_id | ||
from employees | from employees | ||
Línea 162: | Línea 162: | ||
group by department_id | group by department_id | ||
having count(*)>2 | having count(*)>2 | ||
− | </source | + | </source> |
[[Archivo:ex_14.png]] | [[Archivo:ex_14.png]] | ||
<br /> | <br /> | ||
Línea 170: | Línea 170: | ||
que tiene y salario medio | que tiene y salario medio | ||
que se cobra en ese departamentos | que se cobra en ese departamentos | ||
− | < | + | <source lang=sql> |
select department_id, count(*)as "empleados", round(avg(salary)) as "salario medio" | select department_id, count(*)as "empleados", round(avg(salary)) as "salario medio" | ||
from employees | from employees | ||
Línea 176: | Línea 176: | ||
group by department_id | group by department_id | ||
− | </source | + | </source> |
[[Archivo:ex_15.png]] | [[Archivo:ex_15.png]] | ||
<br /> | <br /> | ||
Línea 184: | Línea 184: | ||
(vendedor queda identificado por | (vendedor queda identificado por | ||
el JOB_ID ‘SA_REP’ | el JOB_ID ‘SA_REP’ | ||
− | < | + | <source lang=sql> |
select department_id | select department_id | ||
from employees | from employees | ||
Línea 191: | Línea 191: | ||
where job_id = 'SA_REP' | where job_id = 'SA_REP' | ||
and department_id is not null) | and department_id is not null) | ||
− | </source | + | </source> |
[[Archivo:ex_16.png]] | [[Archivo:ex_16.png]] | ||
<br /> | <br /> | ||
Línea 201: | Línea 201: | ||
El trabajo de vendedor viene especificado | El trabajo de vendedor viene especificado | ||
con el job_id SA_REP | con el job_id SA_REP | ||
− | < | + | <source lang=sql> |
select d.department_id, department_name, location_id | select d.department_id, department_name, location_id | ||
from employees e , DEPARTMENTS d | from employees e , DEPARTMENTS d | ||
Línea 211: | Línea 211: | ||
where job_id = 'SA_REP' | where job_id = 'SA_REP' | ||
and department_id is not null) | and department_id is not null) | ||
− | </source | + | </source> |
[[Archivo:ex_18b.png]] | [[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