Está en la página 1de 8

EJERCICIOS DE SQL

Villarroel Lpez Juan Manuel




--1.Hallar los nombres de los departamentos ordenados por su ciudad,
pero en orden inverso.

select dname, loc
from dept
order by loc desc


--2.Obtener el nombre y empleo de los empleados, ordenado por salario.

Select ename, job, sal,
From emp
Order by sal

--3.Obtn los salarios y las comisiones de los empleados del
departamento 30.

Select deptno,ename,sal,comm
From emp
Where deptno =30

--4.Obtn las distintas comisiones.
Select distinct comm
From emp

--5.Hallar las distintas comisiones y los nombres de los empleados.

Select distinct comm,ename
From emp
Where comm. Is not null


--6.Hallar los distintos salarios y empleados.

Selec distinct sal,ename
From emp


--7.Obtenga los nuevos salarios que resultaran de sumar a los
empleados del departamento 30 una gratificacin de 1000 unidades
monetarias
.
Select deptno,sal,+1000 AS NUEVO SALARIO
From emp
Where deptno=30

--8.dem pero obteniendo tambin el salario anterior.

Select deptno, sal,sal+1000 AS NUEVO SALARIO
From emp
Where deptno=30

--9.Hallar los empleados que tienen una comisin superior a la mitad
de su salario.

Select ename
From emp
Where comm >(sal/2)

--10.Hallar los empleados cuya comisin es menor o igual que el 25%
del sueldo.

Select ename
From emp
Where comm <=(sal*0.25)
--11.Haga que en cada fila figure 'Nombre: ' y 'Puesto: '
anteponindose a su respectivo valor.

Select Nombre:,ename,puesto,job
From emp


--12.Hallar el salario y la comisin de los empleados cuyo nmero de
empleado supera a 7500.

Select empno,sal,comm
From emp
Where empno>7500

--13.Si dividimos los empleados en dos grupos, A y B, empezando los
del grupo B en la letra J, obtn los nombres y empleos de los del
grupo B, por orden alfabtico.

select ename, job
from emp
where substring(ename,1,1)>'j'
order by ename asc

--14.Obtener el salario, la comisin y el salario total (salario +
comisin) de los empleados con comisin, ordenado por nmero de
empleado.

select sal, comm, (sal+comm) as 'salario total'
from emp
where comm is not null
order by empno asc

--15.Hallar el nombre de los empleados que, teniendo un salario
superior a 1000, tienen como director al empleado de cdigo 7698.
select ename, mgr
from emp
where sal > 1000 and mgr =7698

--16.Halla el conjunto complementario del resultado del ejercicio
anterior.

select ename, mgr
from emp
where sal < 1000 and mgr <>7698

--17.Hallar el porcentaje que supone la comisin sobre el salario
total ordenando por nombre.

Select ename,sal+comm as 'salario total', comm,round((100*comm/(sal+comm)),0) as
'porcentaje'
from emp
where comm is not null
order by ename


--18.Hallar los empleados del departamento 10 cuyo nombre no contiene
la cadena "LA".

select ename
from emp
where deptno = 10 and ename not like '%la%

--19.Obtn los empleados que no son supervisados por ningn otro.

Select ename, mgr
From emp
Where mgr is null

--20.Obtn los nombres de los departamentos que no sean "SALES" ni
"RESEARCH",

select dname
from dept
where not dname='ventas' and not dname ='investigacion'
order by loc

--21.Deseamos conocer el nombre y departamento de los administrativos
que no trabajan en el departamento 10 y cuyo salario es superior a
800, ordenados por la fecha de incorporacin.

select ename, deptno, sal , hiredate
from emp
where job='administrativo' anddeptno<>10 and sal > 800
order by hiredate asc

--22.Para los empleados que tienen comisin obtn sus nombres en orden
alfabtico y el cociente entre salario y comisin.

Select ename,comm,sal/comm
From emp
Where comm. Is not null
Order by ename

--23.Obtn informacin de los empleados cuyo nombre contiene
exactamente cinco caracteres.

Select ename
Form emp
Where len(ename)=5

--24.dem pero cuyos nombres contengan al menos cinco caracteres.
Select ename
From emp
Where len(ename)>=5




--25.Halla los datos de los empleados para los que, su nombre comienza
por A y su salario es mayor que 1000, o, reciben comisin y trabajan
en el departamento 30.

select ename, job, mgr, sal, deptno
from emp
where (ename like '[a]%' and sal>1000)

--26.Halla el nombre y salario total de todos los empleados ordenado
por este ltimo y por su propio salario.

select ename, sal+comm as 'salario total' , sal
from emp
order by sal+comm, sal

--27.Obtn los nombres, salarios y comisiones de los empleados que
perciben un salario situado entre la mitad de la comisin y la propia
comisin.

Select ename,sal,comm
From emp
Where sal between comm/2 and comm.
Order by comm.

--28.El complementario del anterior.

Select ename,sal,comm
From emp
Where sal not between comm./2 and comm.
Order by comm

--29.Intenta lograr los nombres y empleos de los empleados tales que
su empleo acaba en "MAN" y su nombre empieza por A.

select ename, job
from emp
where ename like '[a]%'and job like '%MAN'

--30.Suponiendo que el ao prximo la subida del total percibido por
empleado es del 6% y el siguiente del 7%, hallar los nombres y
salarios totales actuales y futuros de todos los empleados, indicando
para cada uno si tienen o no comisin.

select ename, comm, sal+comm as 'Salario
total',(sal+comm)+(0.06*(sal+comm)) as '6%',
(sal+comm)+(0.07*(sal+comm)) as'7%'
from emp
where comm is not null
union
select ename, comm,sal, sal+(0.06*sal),sal+(0.07*sal)
from emp
where comm is null

--31.Halla el nombre y la fecha de ingreso de los empleados que no son
vendedores.
select ename, hiredate
from emp
where job <> 'vendedor'

--32.Para los empleados que tienen como director a algn otro con
nmero mayor que el suyo, obtener los que reciben de salario ms de
1000 y menos de 2000, o estn en el departamento 30.

Selec ename, mgr,empno,sal,deptno
From emp
Where mgr>empno and sal between 1000 and 2000

--33.Obtn el salario ms alto de la empresa, el total destinado a
comisiones y el nmero de empleados.

select max(sal) as 'Maximo Salario', sum(comm) as 'Total de
comisiones',count(empno) as 'Total de Empleados'
from emp

--34.Halla los datos de los empleados cuyo salario es mayor que el del
empleado de cdigo 7934, ordenando por el propio salario.

Select ename,sal
From emp
Where sal>(select sal
From emp
Where empno=7934)


--35.Obtn informacin en la que se reflejen los nombres, empleos y
salarios tanto de los que superan el salario de Allen como del propio
Allen.

Select ename,job,sal
From emp
Where sal >(select sal
From emp
Where ename='allen')

--36.Halla el nombre del ltimo empleado por orden alfabtico.

Select ename
From emp
Where ename>=all(select ename
From emp)

--37.Halla el salario ms alto, el ms bajo y la diferencia entre
ellos.

Select max(sal)as 'salario maximo', min(sal)as 'salario
minimo',(mas(sal)-min(sal))as 'diferencia'
From emp

--38.Quines reciben el salario ms alto y ms bajo, y a cunto
ascienden?

select ename, sal
from emp where sal >= all(select sal from emp)
union
select ename, sal
from emp where sal <= all(select sal from emp)

--39.Halla la media de los salarios de los departamentos cuyo salario
mnimo supera a 900, considerando los salarios inferiores a 5000.
Adems se necesita el cdigo y el nombre de los departamentos.

Select e.deptno,d.dname,avg(sal) as 'salario promedio'
From emp e,dept d
Where e.deptno=d.deptno and
e.deptno not in(select deptno
from emp
where sal <=900)
group by d.name, e.deptno


--40.Qu empleados trabajan en ciudades que tienen ms de cinco
letras? Ordena el resultado inversamente por ciudades y normalmente
por nombres de empleados.

Select e.ename, de.loc
From emp e, dept d
Where e.deptno=d.deptno and len(d.loc)>5
Order by d.loc desc , e.ename


--41.Halla los empleados cuyo salario supera o coincide con la media
del salario de la empresa.

Select ename, sal
From emp
Where sal >=all(select avg(sal)
From emp)

--42.Obtn los empleados cuyo salario supera al de sus compaeros de
departamento.

Select e.ename, e.sal, e.deptno
From emp e
Where e.sal >=all(select sal
From emp
Where deptno=e.deptno)


--43.Cuntos empleos diferentes, empleados y diferentes salarios
encontramos en el departamento 30, y a qu cantidad asciende la suma
de los salarios de dicho departamento?

Select count(distinct job) as 'Empleos', count(ename) as 'Empleados',
Count(distinct sal) as 'salarios',sum(sal) as 'Total de salarios'
From emp
Where deptno=30

--44.Cuntos empleados tienen comisin?

Select count(comm) as 'Cantidad de empleados con comision'
From emp

--45.Cuntos empleados tiene el departamento 20?

Select count(e.empno) as 'Cantidad de Emp del Dept 10'
From emp e,dept d
Where e.deptno=d.deptno and d.deptno= 10

--46.Halla los departamentos que tienen ms de tres empleados y el
nmero de empleados de los mismos.

select e.deptno, d.dname, count(e.ename)as 'Cant de Empleados'
from emp e, dept d
where d.deptno=e.deptno and3<(select count(ename)
from emp
where deptno=d.deptno)
group by dname, e.deptno

--47.Obtn los empleados del departamento 10 que tienen el mismo
empleo que alguien del departamento de "SALES" (o sea, desconocemos el
cdigo del departamento "SALES").

--48.Halla los empleados que tienen por lo menos un empleado a su
mando, ordenados inversamente por nombre.

Select ename
From emp
Where empno in(select mgr
From emp)
Orde by ename desc

--49.Qu empleos distintos encontramos en la empresa y cuntos
empleados desempean cada uno?

--50.Halla la suma de los salarios de cada departamento.

select d.dname, sum(e.sal) as 'suma de salarios'
from emp e, dept d
where e.deptno=d.deptno
group by d.dname

--51.Halla los empleados que no tienen a otro empleado a sus rdenes.

--52.Cuntos empleos hay en cada departamento y cul es la media
anual del salario de cada uno? Indique el nombre del departamento para
clarificar el resultado.

select count(e.ename), avg(e.sal)
from emp e, dept d
where e.deptno=d.deptno
group by d.deptno

--53.Halla los empleados del departamento 30 por orden descendente de
comisin.

Select ename,deptno, comm
From emp
Where deptno=30
Order by comm Desc

--54.Obtn los empleados que trabajan en Dallas o en New York.

select ename
from emp
where deptno in(select deptnofrom deptwhere loc='dallas' or loc='new
york')

--55.Obtn un listado en el que se reflejen el cdigo y el nombre de
cada supervisor, junto al nmero de empleados que supervisa
directamente. Fjese en que puede haber empleados que no tengan
supervisores, as que para estos se indicar solamente el nmero de
ellos dejando los restantes valores a NULL.

--56.Hllense los empleados con salario mayor de cada departamento. Se
debe incluir el salario y el nombre del departamento.

select e.ename, e.sal, d.dname
from emp e, dept d
where d.deptno=e.deptno and e.sal>= all(select sal
from emp
where deptno=e.deptno)


--57.Hallar el departamento cuya suma de salarios sea la ms alta.
Halla tambin la mencionada suma.

--58.Cules son los dos empleados con los mayores salarios?

--59.Determinar las localidades que no son sede de departamentos que
no tienen empleados, y en las que trabajan al menos cuatro empleados,
indicando el nmero de empleados que trabaja en cada una.

Intereses relacionados