Ejercicios SQL
Ejercicios SQL
USE ejercicioSQL
CREATE TABLE departamento
(
codDepto VARCHAR (4),
nombreDpto VARCHAR(20) NOT NULL,
ciudad VARCHAR (15),
codDirector VARCHAR(12)
);
10. Obtener el nombre y cargo de todos los empleados, ordenado por salario
select nomEmp, cargo from empeado order by salEmp;
11. Obtener el nombre y cargo de todos los empleados, ordenado por cargo y
por salario
SELECT nomEmp, cargo, salEmp FROM empeado
ORDER BY cargo, salEmp;
12. Obtener el nombre y cargo de todos los empleados, en orden inverso por
cargo
SELECT nomEmp, cargo FROM empeado
ORDER BY cargo DESC;
13. Listar los salarios y comisiones de los empleados del departamento 2000
SELECT nomEmp, salEmp, comis FROM Empeado
WHERE nroDepto = '2000';
14. Listar los salarios y comisiones de los empleados del departamento 2000,
ordenado
por comisión
SELECT nomEmp, salEmp, comis FROM Empeado
WHERE nroDepto = '2000'
ORDER BY comis;
16. Listar las comisiones que sean diferentes, ordenada por valor
SELECT DISTINCT comis FROM Empeado
ORDER BY comis;
18. Obtener el valor total a pagar que resulta de sumar a los empleados del
departamento 3000 una bonificación de $500.000, en orden alfabético del
empleado
SELECT nomEmp, salEmp, 'Pago Total = $', salEmp+500000 FROM Empeado
WHERE nroDepto = '3000';
19. Obtener la lista de los empleados que ganan una comisión superior a su
sueldo.
SELECT nDIEmp, nomEmp, salEmp, comis FROM Empeado
WHERE comis > salEmp;
20. Listar los empleados cuya comisión es menor o igual que el 30% de su
sueldo.
SELECT nDIEmp, nomEmp, salEmp, comis FROM Empeado
WHERE comis <= salEmp*0.30;
21. Elabore un listado donde para cada fila, figure ‘Nombre’ y ‘Cargo’ antes
del valor
respectivo para cada empleado
SELECT 'Nombre: ', nomEmp, 'Cargo: ', cargo FROM Empeado;
22. Hallar el salario y la comisión de aquellos empleados cuyo número de
documento
de identidad es superior al '19.709.802'
SELECT nDIEmp, nomEmp, salEmp,comis FROM Empeado
WHERE nDIEmp > '19.709.802';
23. Listar los empleados cuyo salario es menor o igual que el 40% de su
comisión SELECT nomEmp, salEmp, comis FROM Empeado
WHERE salEmp <= comis*0.40;
24. Divida los empleados, generando un grupo cuyo nombre inicie por la letra
Jy
termine en la letra Z. Liste estos empleados y su cargo por orden alfabético.
SELECT Jz.nomEmp, Jz.cargo FROM (SELECT *FROM Empeado WHERE nomEmp > 'J' AND nomEmp <'z')JZ
ORDER BY nomEmp;
34. Listar los datos de los empleados cuyo nombre inicia por la letra 'M', su
salario es mayor a $800.000 o reciben comisión y trabajan para el
departamento de 'VENTAS'
select nomEmp from EMPLEADO
WHERE nomEmp 800000 comis 0 like 'M%’ and (salEmp > 800000 or comis >0);
35. Obtener los nombres, salarios y comisiones de los empleados que reciben
un salario
situado entre la mitad de la comisión la propia comisión
SELECT nomEmp, salEmp, comis FROM Empeado
WHERE salEmp >= comis/2 AND
salEmp <= comis ;
36. Suponga que la empresa va a aplicar un reajuste salarial del 7%. Listar los
nombres
de los empleados, su salario actual y su nuevo salario, indicando para cada
uno de ellos
si tiene o no comisión
SELECT nomEmp, salEmp, (salEmp*1.07),comis FROM Empeado;
42. Hallar el salario más alto, el más bajo y la diferencia entre ellos.
SELECT MAX (salEmp), MIN (salEmp),(MAX (salEmp) - MIN (salEmp)) FROM Empeado;
43. Conocido el resultado anterior, entregar el nombre de los empleados que
reciben el salario más alto y más bajo. Cuanto suman estos salarios?
SELECT MAX (salEmp), MIN (salEmp),
(MAX (salEmp) + MIN (salEmp)) FROM Empeado;
48. Hallar los departamentos que tienen más de tres (3) empleados. Entregar
el número de empleados de esos departamentos.
SELECT N.nroDepto, D.nombreDpto, N.nro FROM departamento D,(SELECT nroDepto, COUNT(nDIEmp) AS nro
FROM Empeado
GROUP BY nroDepto
HAVING COUNT(nDIEmp)>3) N
WHERE N.nroDepto = D.codDepto;
53. Entregar un reporte con el código y nombre de cada jefe, junto al número
de empleados que dirige. Puede haber empleados que no tengan
supervisores, para esto se indicará solamente el número de ellos dejando los
valores restantes en NULL.
SELECT D.nDIEmp, D.nomEmp, E.noSu
FROM Empeado D,
(SELECT jefeDI, COUNT(nDIEmp) AS noSu
FROM Empeado
WHERE jefeDI IS NOT NULL
GROUP BY jefeDI) E
WHERE D.nDIEmp = E.jefeDI
ORDER BY E.noSu DESC
;