7
PRÁCTICA Soluciones SQL- 67 B 1. Obtener por orden alfabético los nombres de los empleados cuyos sueldos igualan o superan al de Claudia Fierro en más del 50% select nomem from temple where salar >= (select salar*1.5 from temple where nomem='FIERRO, CLAUDIA') ORDER BY NOMEM; NOMEM -------------------- LOPEZ, ANTONIO 2. Obtener por orden alfabético los nombres de los empleados cuyo salario supera al máximo salario de los empleados del departamento 122. select nomem from temple where salar>all(select salar from temple where numde=122) order by nomem; NOMEM -------------------- LOPEZ, ANTONIO PEREZ, MARCOS 3. Obtener por orden alfabético los nombres de los empleados cuyo salario supera en tres veces y media o más al mínimo salario de los empleados del departamento 122. select nomem from temple where salar/3.5>= some(select salar from temple where numde=122) order by nomem; NOMEM -------------------- LOPEZ, ANTONIO 4. Obtener los nombres y salarios de los empleados cuyo salario coincide con la comisión de algún otro o la suya propia. Ordenarlos alfabéticamente. select nomem, salar from temple where salar = any (select comis from temple) order by nomem; NOMEM SALAR -------------------- --------- SANTOS, SANCHO 100

soluciones-SQL67Br

  • Upload
    imad

  • View
    13

  • Download
    0

Embed Size (px)

DESCRIPTION

:)

Citation preview

Page 1: soluciones-SQL67Br

PRÁCTICA Soluciones SQL- 67 B

1. Obtener por orden alfabético los nombres de los empleados cuyos sueldos igualan o

superan al de Claudia Fierro en más del 50%

select nomem

from temple

where salar >= (select salar*1.5

from temple

where nomem='FIERRO, CLAUDIA')

ORDER BY NOMEM;

NOMEM

--------------------

LOPEZ, ANTONIO

2. Obtener por orden alfabético los nombres de los empleados cuyo salario supera al

máximo salario de los empleados del departamento 122.

select nomem

from temple

where salar>all(select salar

from temple

where numde=122)

order by nomem;

NOMEM

--------------------

LOPEZ, ANTONIO

PEREZ, MARCOS

3. Obtener por orden alfabético los nombres de los empleados cuyo salario supera en tres

veces y media o más al mínimo salario de los empleados del departamento 122.

select nomem

from temple

where salar/3.5>= some(select salar

from temple

where numde=122)

order by nomem;

NOMEM

--------------------

LOPEZ, ANTONIO

4. Obtener los nombres y salarios de los empleados cuyo salario coincide con la comisión

de algún otro o la suya propia. Ordenarlos alfabéticamente.

select nomem, salar

from temple

where salar = any (select comis from temple)

order by nomem;

NOMEM SALAR

-------------------- ---------

SANTOS, SANCHO 100

Page 2: soluciones-SQL67Br

5. Obtener por orden alfabético los nombres y los salarios de los empleados cuyo salario

es inferior a la comisión más alta existente. select nomem, salar

from temple

where salar<any(select comis from temple)

order by nomem;

NOMEM SALAR

-------------------- ---------

SANTOS, SANCHO 100

6. Obtener por orden alfabético los nombres y salarios de los empleados cuyo salario es

inferior al cuádruplo de la comisión más baja existente.

select nomem, salar

from temple

where salar<all(select comis*4

from temple

where comis is not null)

order by nomem;

NOMEM SALAR

-------------------- ---------

LARA, LUCRECIA 185

MARTIN, MICAELA 180

MUÑOZ, AZUCENA 175

RUIZ, FABIOLA 190

SANTOS, SANCHO 100

TORRES, HORACIO 180

6 filas seleccionadas.

7. Obtener por orden alfabético los nombres de los departamentos que trabajan en el

mismo departamento que Pilarica Gálvez y Doroteita Flor.

select nomem

from temple

where numde in (select numde

from temple

where nomem in

('GALVEZ, PILAR','FLOR, DOROTEA'))

ORDER BY NOMEM;

NOMEM

--------------------

ALBA, ADRIANA

FIERRO, CLAUDIA

FLOR, DOROTEA

GALVEZ, PILAR

GARCIA, AUGUSTO

LOPEZ, ANTONIO

6 filas seleccionadas.

8. Obtener el nombre de los centros de trabajo si hay alguno que este en la calle Atocha.

select nomce

from tcentr

where exists (select *

from tcentr

where domi like '%ATOCHA%')

order by nomce;

NOMCE

Page 3: soluciones-SQL67Br

-------------------------

RELACIÓN CON CLIENTES

SEDE CENTRAL

9. Obtener por orden alfabético los nombres y comisiones de los empleados del

departamento 110 si hay en él algún empleado que tenga comisión.

select nomem, comis

from temple

where numde=110

and exists (select * from temple

where numde=110 and comis is not null)

order by nomem;

NOMEM COMIS

-------------------- ---------

CAMPOS, ROMULO

MORAN, CARMEN

PEREZ, MARCOS 50

10. Hallar por orden de numero de empleado el nombre y salario total (salario más

comisión) de los empleados cuyo salario total supera al salario mínimo en 100.000 Ptas.

mensuales.

select numem, nomem, salar+comis

from temple

where salar+comis >any (select salar+100

from temple)

order by numem;

NUMEM NOMEM SALAR+COMIS

--------- -------------------- -----------

120 LASA, MARIO 460

160 AGUIRRE, AUREO 420

180 PEREZ, MARCOS 530

270 GARCIA, OCTAVIO 460

11. Obtener por orden alfabético los nombres y salarios de los empleados del

departamento 111 que tienen comisión si hay alguno de ellos cuya comisión supere al 15%

de salario.

select nomem, salar

from temple

where numde=111 and comis is not null and

exists(select * from temple

where numde = 111 and

comis is not null and

comis>0.15*salar)

order by nomem;

NOMEM SALAR

-------------------- ---------

AGUIRRE, AUREO 310

DURAN, LIVIA 210

LARA, DORINDA 250

PINO, DIANA 210

SANTOS, SANCHO 100

SANZ, LAVINIA 280

VAZQUEZ, HONORIA 200

7 filas seleccionadas.

Page 4: soluciones-SQL67Br

12. Hallar por orden alfabético los nombres y los salarios de los empleados de los

departamentos 110 y 111 que o bien no tienen hijos o bien su salario por hijo supere a

100000 ptas., si hay alguno sin comisión en los departamentos 111 ó 112.

select nomem, salar

from temple

where (numde=110 or numde=111) and

(numhi=0 or salar>100*numhi) and

exists (select * from temple

where (numde=111 or numde=112)

and comis is null)

order by nomem;

NOMEM SALAR

-------------------- ---------

AGUIRRE, AUREO 310

CAMPOS, ROMULO 200

DURAN, LIVIA 210

LARA, DORINDA 250

LARA, LUCRECIA 185

MORAN, CARMEN 215

PEREZ, MARCOS 480

PINO, DIANA 210

SANTOS, SANCHO 100

VAZQUEZ, HONORIA 200

10 filas seleccionadas.

13. Obtener por orden alfabético los salarios y nombres de los empleados cuyo salario se

diferencia con el máximo en menos de un 40% de éste.

select salar, nomem

from temple

where salar >= (select 0.6 * max(salar)

from temple)

order by nomem;

SALAR NOMEM

--------- --------------------

450 ALBA, ADRIANA

450 CAMPS, AURELIO

720 LOPEZ, ANTONIO

440 PEREZ, JULIO

480 PEREZ, MARCOS

14. Hallar la edad en años cumplidos del empleado más viejo del departamento 110.

select distinct trunc((sysdate-fecna)/365)

from temple

where numde = 110 and

fecna = ( select min(fecna)

from temple

where numde =110);

TRUNC((SYSDATE-FECNA)/365)

--------------------------

56

Page 5: soluciones-SQL67Br

15. Hallar el salario medio de los empleados cuyo salario no supera en más de 20% al salario

mínimo de los empleados que tienen algún hijo y su salario es mayor que 100 000 ptas.

select avg(salar)

from temple

where salar<=(select 1.20*min(salar)

from temple

where numhi<>0 and

salar>numhi*100);

AVG(SALAR)

----------

189,61538

16. Hallar el presupuesto medio de los departamentos cuyo presupuesto supera al

presupuesto medio de los departamentos.

select avg(presu)

from tdepto

where presu>(select avg(presu)

from tdepto);

AVG(PRESU)

----------

13,5

17. Obtener por orden alfabético los nombres y los salarios de los empleados que o bien

ingresaron después del 01-01-88 o bien antes y además tienen salario inferior al salario

más bajo de los que ingresaron con posterioridad al 01-01-88 incrementado en un 100%.

select nomem, salar

from temple

where fecin > '01-ENE-88'

or (fecin <= '01-ENE-88' and

salar < (select min(salar)*2

from temple

where fecin>'01-ENE-88'))

order by nomem;

NOMEM SALAR

-------------------- ---------

FIERRO, CLAUDIA 400

LARA, LUCRECIA 185

MARTIN, MICAELA 180

MORA, VALERIANA 210

MUÑOZ, AZUCENA 175

RUIZ, FABIOLA 190

SANTOS, SANCHO 100

TORRES, HORACIO 180

8 filas seleccionadas.

18. Hallar el salario medio por departamento para aquellos departamentos cuyo salario

máximo es inferior al salario medio de todos los empleados.

select numde, avg(salar)

from temple

group by numde

having max(salar)<(select avg(salar)

from temple)

order by numde;

Page 6: soluciones-SQL67Br

NUMDE AVG(SALAR) --------- ----------

120 270

19. Para los departamentos en los que hay algún empleado cuyo salario sea mayor que

400.000 ptas. al mes hallar el número de empleados y la suma de sus salarios,

comisiones y número de hijos.

select numde, count(*), sum(salar),

sum(comis), sum(numhi)

from temple

where numde in (select distinct numde

from temple

where salar>400)

group by numde

order by numde;

NUMDE COUNT(*) SUM(SALAR) SUM(COMIS) SUM(NUMHI)

--------- --------- ---------- ---------- ----------

100 3 1550 8

110 3 895 50 4

121 4 1240 8

122 5 1620 4

130 3 1110 5

20. Para los departamentos en los que la antigüedad media de sus empleados supera a la de

la empresa, hallar el salario mínimo, el medio y el máximo.

select numde, min(salar), avg(salar), max(salar)

from temple

group by numde

having avg(sysdate-fecin)>( select avg(sysdate-fecin)

from temple)

order by numde;

NUMDE MIN(SALAR) AVG(SALAR) MAX(SALAR)

--------- ---------- ---------- ----------

100 380 516,66667 720

120 270 270 270

121 190 310 440

21. Para los departamentos en los que algún empleado tiene comisión, hallar cuantos

empleados hay en promedio por cada extensión telefónica.

select numde, 100*count(*)/count(distinct extel)

from temple

where numde in (select distinct numde

from temple

where comis is not null)

group by numde

order by numde;

NUMDE 100*COUNT(*)/COUNT(DISTINCTEXTEL)

--------- ---------------------------------

110 100

111 200

112 140

Page 7: soluciones-SQL67Br

22. Obtener por orden creciente los números de extensiones telefónicas de los

departamentos que tienen más de dos y que son compartidas por menos de 4 empleados,

excluyendo las que no son compartidas.

select extel

from temple

where numde in (select numde

from temple

group by numde

having count (distinct extel)>2)

group by extel

having count(*) between 2 and 3

order by extel;

EXTEL

---------

340

350

620

750

760

780

850

880

8 filas seleccionadas.

23. Para los departamentos cuyo salario medio supera al de la empresa hallar cuántas

extensiones telefónicas tienen.

select numde, count (distinct extel)

from temple

group by numde

having avg(salar)>(select avg(salar)

from temple)

order by numde;

NUMDE COUNT(DISTINCTEXTEL)

--------- --------------------

100 3

121 3

122 4

130 3

24. Hallar el máximo valor de la suma de los salarios de los departamentos.

select numde, sum(salar)

from temple

group by numde

having sum(salar)>=all (select sum(salar)

from temple

group by numde)

order by numde;

NUMDE SUM(SALAR)

--------- ----------

112 1870