Diferencia entre revisiones de «Usuario:ManuelRomero/Img»

De WikiEducator
Saltar a: navegación, buscar
(Imagen de la solución de cada ejercicio)
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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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 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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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>
+
<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 />

Revisión de 07:05 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%'

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