1. PRÁCTICA FINAL ORACLE
Extracción de datos
1.-
SELECT f.apellido,f.oficio,o.ciudad
FROMfuncionariosf
JOIN oficinasoon f.idofi=o.idofi;
2.-
SELECT f.apellido,f.oficio,o.ciudad
FROMfuncionariosf
JOIN oficinasoON f.idofi =o.idofi
WHERE f.oficio='ANALISTA';
3.-
SELECT f.apellido,f.oficio,f.sueldo
FROMfuncionariosf joinoficinaso
ON f.idofi =o.idofi
WHERE o.ciudad='GUAYAQUIL';
4.-
SELECT f.apellido,f.sueldo,o.ciudad
FROMfuncionariosf joinoficinaso
ON f.idofi =o.idofi
WHERE f.sueldoBETWEEN 2000 and 3000;
5.-
selectf.idfunc,f.apellido,f.oficio,f.supervisor,f.fechacontrato,f.sueldo,f.comision,f.idofi
fromfuncionariosf joinoficinaso
on f.idofi=o.idofi
where o.nombreofi ='CONTABILIDAD'
orderby apellido;
6.-
2. selectf.idfunc,f.apellido,f.oficio,f.supervisor,f.fechacontrato,f.sueldo,f.comision,f.idofi
fromfuncionariosf joinoficinaso
on f.idofi =o.idofi
where o.ciudad ='CUENCA' and (f.oficio='ANALISTA'orf.oficio='VENDEDOR');
7.-
SELECT max(sueldo)
FROM funcionarios
WHERE idofi =10;
8.-
SELECT avg(f.SUELDO)
FROM funcionariosf joinoficinaso
ON f.idofi =o.idofi
WHERE o.nombreofi='CONTABILIDAD';
9.-
SELECT idfunc,apellido,oficio,supervisor,fechacontrato,sueldo,comision,idofi
FROM funcionarios
WHERE SUELDO > (SELECT avg(sueldo)fromfuncionarios);
10.-
SELECT count(f.idfunc) "#FUNC"
FROM funcionariosf joinoficinaso
ON f.idofi =o.idofi
WHERE o.nombreofi='INVESTIGACION';
11.-
SELECT count(idfunc) "#FUNC"
FROM funcionarios
WHERE COMISION = 0;
12.-
SELECT count(APELLIDO) "ApellidosconA"
FROM funcionarios
WHERE apellidolike 'A%'
13.-
3. SELECT avg(sueldo),count(comision),max(sueldo),min(sueldo)
FROM funcionarios
WHERE comisionisnotnull andidofi = 30;
14.-
SELECT
count(decode (idofi,10,idfunc))"10",
count(decode (idofi,20,idfunc))"20",
count(decode (idofi,30,idfunc))"30",
count(decode (idofi,40,idfunc))"40"
FROM funcionarios;
15.-
SELECT o.nombreofi
FROM funcionariosf JOIN oficinaso
ON f.idofi =o.idofi
GROUP BY o.nombreofi
HAVINGCOUNT(f.idofi)>4;
16.-
select apellido
fromfuncionarios
where idofi =30 ANDoficio<> 'VENDEDOR';
17.-
SELECT count(idfunc) "Novendedores"
From funcionarios
WHERE idofi =30 andoficio<> 'VENDEDOR';
18.-
SELECT count(decode(o.idofi,10,f.idfunc)) "OFICINACONTABILIDAD",
count(decode(o.idofi,20,f.idfunc)) "OFICINA INVESTIGACIÓN",
count(decode(o.idofi,30,f.idfunc)) "OFICINA VENTAS",
count(decode(o.idofi,40,f.idfunc)) "OFICINA OPERACIONES"
FROM funcionariosf joinoficinaso
ON f.idofi =o.idofi
WHERE f.oficio ='ANALISTA';
4. 19.-
SELECT sum(decode(f.oficio,'SECRETARIO',f.sueldo))"OFICIOSECRETARIO",
sum(decode(f.oficio,'VENDEDOR',f.sueldo)) "OFICIOVENDEDOR",
sum(decode(f.oficio,'DIRECTOR',f.sueldo))"OFICIODIRECTOR",
sum(decode(f.oficio,'ANALISTA',f.sueldo)) "OFICIOANALISTA",
sum(decode(f.oficio,'PRESIDENTE',f.sueldo)) "OFICIOPRESIDENTE"
FROM funcionariosf joinoficinaso
ON f.idofi =o.idofi
WHERE o.nombreofi='VENTAS';
20.-
SELECT o.nombreofi,count(f.idfunc) "#Personas",f.oficio
fromfuncionariosf JOIN oficinaso
ON f.idofi =o.idofi
GROUP BY o.nombreofi,f.oficio
HAVINGCOUNT (f.idfunc) >2;
21.-
SELECT distinctf.idofi,o.nombreofi,o.ciudad
FROM oficinasoleftjoinfuncionariosf
ON o.idofi = f.idofi
WHERE f.idofi isnull;
22.-
SELECT count(f.idfunc),o.nombreofi
FROM funcionariosf rightjoinoficinaso
ON f.idofi =o.idofi
GROUP BY o.nombreofi;
23.-
SELECT o.idofi,o.nombreofi,sum(f.sueldo) sueldos
FROM funcionariosf rightjoin oficinaso
ON f.idofi =o.idofi
GROUP BY o.nombreofi,o.idofi;
24.-
5. selecto.idofi,o.nombreofi,nvl(sum(f.sueldo),0) sueldos
fromfuncionariosf rightjoinoficinaso
on f.idofi =o.idofi
groupby o.nombreofi,o.idofi;
25.-
selecto.ciudad
fromoficinasojoinproyectosp
on o.idofi =p.idofi;
26.-
SELECT o.nombreofi,count(f.idfunc) "#Personas",f.oficio
fromfuncionariosf joinoficinaso
on f.idofi =o.idofi
groupby o.nombreofi ,f.oficio
havingcount(f.idfunc)>3;
27.-
selectdistinctf.apellido,f.idofi,p.idproy
fromfuncionariosf leftjoinproyectosp
on f.idofi =p.idofi
where p.idproyisnull;
28.-
selectf.apellido,o.ciudad,p.horassemana
fromfuncionariosf joinoficinaso
on f.idofi =o.idofi
joinparticipantesp
on f.idfunc=p.idfunc
where o.ciudad='CUENCA'andp.horassemana>20;
29.-
SELECT distinctnombreproy,lugar
FROMproyectosp,participantespa
WHERE p.idproy=pa.idproy;
30.-
6. selectapellido,oficio,sueldo
fromfuncionarios
where sueldo>(selectsueldo
fromfuncionarios
where apellido='AGUIRRE');
31.-
SELECT o.idofi,o.nombreofi,round(avg(f.sueldo),2) promedio
fromfuncionariosf joinoficinaso
on f.idofi=o.idofi
where f.sueldobetween900 and 5000
groupby o.idofi,o.nombreofi;
32.-
SELECT o.idofi,f.apellido,o.nombreofi
fromfuncionariosf joinoficinaso
on f.idofi=o.idofi
where o.idofi=10and f.oficioin(selectfun.oficiofromfuncionariosfunjoin
oficinasofi onfun.idofi=ofi.idofiwhere ofi.nombreofi='VENTAS')
33.-
SELECT f.idfunc,f2.apellido,f2.oficio
fromfuncionariosf joinFUNCIONARIOSf2
on f.idfunc=f2.supervisor
joinoficinasoono.idofi=f2.idofi
where o.ciudad='CUENCA'
orderby 3;
34.-
selectcount(decode(o.nombreofi,'CONTABILIDAD',f.oficio))"DEPTCONTABILIDAD",
AVG(decode(o.nombreofi,'CONTABILIDAD',f.sueldo*12))"SUELDOANUALCONT",
count(decode(o.nombreofi,'INVESTIGACION',f.oficio)) "DEPT
INVESTIGACION",AVG(decode(o.nombreofi,'INVESTIGACION',f.sueldo*12))"SUELDOANUALINV",
count(decode(o.nombreofi,'VENTAS',f.oficio)) "DEPT
VENTAS",AVG(decode(o.nombreofi,'VENTAS',f.sueldo*12))"SUELDOANUALVENTAS",
count(decode(o.nombreofi,'OPERACIONES',f.oficio)) "DEPT
OPERACIONES",AVG(decode(o.nombreofi,'OPERACIONES',f.sueldo*12))"SUELDOANUALOP"
fromfuncionariosf joinoficinaso
7. on f.idofi=o.idofi;
35.-
SELECT distinctf.supervisor,f1.apellido,count(decode(f1.apellido,F1.APELLIDO,f.idfunc))"numero
de funcionarios"
fromfuncionariosf joinfuncionariosf1
on f.supervisor=f1.idfunc
groupby f.supervisor,f1.apellido;
36.-
selecto.nombreofi ,max (decode(f.apellido,f.apellido,f.sueldo))"sueldomayor",f.idofi
from funcionariosf joinoficinaso
on f.idofi =o.idofi
groupby o.nombreofi,f.idofi;
37.-
selectmax(sum(decode(o.nombreofi,o.nombreofi,f.sueldo)))"masalta"
from funcionariosf
joinoficinaso
on f.idofi =o.idofi
groupby f.idfunc;
38.-
SELECT nombreofi,oficinas.idofi,x.sueldos
FROMoficinas
JOIN (SELECT distinct(idofi) ofi,sum(sueldo) sueldos
FROM funcionarios
group byidofi
havingcount(idofi) >=2
and (sum(sueldo)/count(idofi))>( SELECT sum(sueldo)/count(sueldo)
FROM funcionarios)) x on(oficinas.idofi=x.ofi );
39.-
SELECT o.ciudad,count(idfunc) "numerofuncionarios"
FROMfuncionariosf rightouter
JOIN oficinasoON f.idofi=o.idofi
GROUP BY o.ciudad
HAVINGCOUNT(idfunc)<4;
40.-