Este documento contiene 50 ejercicios de SQL para consultar y manipular datos de empleados y departamentos almacenados en bases de datos. Los ejercicios incluyen consultas simples como obtener datos específicos, consultas con filtros y ordenamiento, consultas con funciones agregadas, subconsultas y joins.
0 calificaciones0% encontró este documento útil (0 votos)
163 vistas4 páginas
Este documento contiene 50 ejercicios de SQL para consultar y manipular datos de empleados y departamentos almacenados en bases de datos. Los ejercicios incluyen consultas simples como obtener datos específicos, consultas con filtros y ordenamiento, consultas con funciones agregadas, subconsultas y joins.
Este documento contiene 50 ejercicios de SQL para consultar y manipular datos de empleados y departamentos almacenados en bases de datos. Los ejercicios incluyen consultas simples como obtener datos específicos, consultas con filtros y ordenamiento, consultas con funciones agregadas, subconsultas y joins.
Este documento contiene 50 ejercicios de SQL para consultar y manipular datos de empleados y departamentos almacenados en bases de datos. Los ejercicios incluyen consultas simples como obtener datos específicos, consultas con filtros y ordenamiento, consultas con funciones agregadas, subconsultas y joins.
Descargue como DOCX, PDF, TXT o lea en línea desde Scribd
Descargar como docx, pdf o txt
Está en la página 1de 4
Ejercicios de SQL-
1. Obtener los datos completos de los empleados.
SELECT * FROM Empleado; 2. Obtener los datos completos de los departamentos SELECT * FROM Departamento; 3. Obtener los datos de los empleados con cargo 'Secretaria'. SELECT CargoE = 'Secretaria' AS Secretaria FROM Empleado; 4. Obtener el nombre y salario de los empleados. SELECT nomEmp, salEmp FROM Empleado; 5. Obtener los datos de los empleados vendedores, ordenado por nombre. SELECT ‘CargoE’ as Vendedores From Empleado OrderBy ASC; 6. Listar el nombre de los departamentos SELECT nombreDpto FROM Departamento; 7. Listar el nombre de los departamentos, ordenado por nombre SELECT*FROM Departamentos Order By nombreDpto ASC; 8. Listar el nombre de los departamentos, ordenado por ciudad SELECT*FROM Departamentos Order By ciudad ASC; 9. Listar el nombre de los departamentos, ordenado por ciudad, en orden inverso SELECT*FROM Departamentos Order By nombreDpto DESC; 10. Obtener el nombre y cargo de todos los empleados, ordenado por salario SELECT nomEmp, CargoE FROM Empleado ORDER BY salEmp; 11. Obtener el nombre y cargo de todos los empleados, ordenado por cargo y por salario SELECT NomEmp, Cargo FROM EMPLEADO ORDER BY Cargo, SalEmp; 12. Obtener el nombre y cargo de todos los empleados, en orden inverso por cargo SELECT NomEmp, Cargo FROM EMPLEADO ORDER BY CARGO DESC; 13. Listar los salarios y comisiones de los empleados del departamento 2000 SELECT SalEmp, ComisionE FROM EMPLEADO WHERE CodDepto = ‘2000’; 14. Listar los salarios y comisiones de los empleados del departamento 2000, ordenado por comisión SELECT SalEmp, ComisionE FROM EMPLEADO WHERE CodDepto = ‘2000’ Order By ComisionE; 15. Listar todas las comisiones Select ComisionE From Empleados; 16. Listar las comisiones que sean diferentes, ordenada por valor Select distinct ComisionEmp from Empleado order by ComisionEmp; 17. Listar los diferentes salarios Select distintc SalEmp from EMPLEADO; 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 Empleado WHERE codDepto = '3000'; 19. Obtener la lista de los empleados que ganan una comisión superior a su sueldo. SELECT nDIEmp, nomEmp, salEmp, comisionE FROM Empleado WHERE comisionE > salEmp; 20. Listar los empleados cuya comisión es menor o igual que el 30% de su sueldo. SELECT nDIEmp, nomEmp, salEmp, comisionE FROM Empleado WHERE comisionE <= 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: ', cargoE FROM Empleado; 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, comisionE FROM Empleado 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, comisionE FROM Empleado WHERE salEmp <= comisionE*0.40; 24. Divida los empleados, generando un grupo cuyo nombre inicie por la letra J y termine en la letra Z. Liste estos empleados y su cargo por orden alfabético. SELECT JZ.nomEmp, JZ.cargoE FROM (SELECT * FROM Empleado WHERE nomEmp> 'J' AND nomEmp <'z') JZ ORDER BY nomEmp; 25. Listar el salario, la comisión, el salario total (salario + comisión), documento de identidad del empleado y nombre, de aquellos empleados que tienen comisión superior a $1.000.000, ordenar el informe por el número del documento de identidad. SELECT nDIEmp, nomEmp, salEmp, comisionE, (salEmp+comisionE) as total FROM Empleado WHERE comisionE > 1000000 ORDER BY nDIEmp; 26. Obtener un listado similar al anterior, pero de aquellos empleados que NO tienen comisión SELECT nDIEmp, nomEmp, salEmp, comisionE, (salEmp+comisionE) as total FROM Empleado WHERE comisionE = 0 ORDER BY nDIEmp; 27. Hallar el nombre de los empleados que tienen un salario superior a $1.000.000, y tienen como jefe al empleado con documento de identidad '31.840.269'. SELECT nomEmp FROM Empleado WHERE salEmp > 1000000 AND jefeID = '31.840.269'; 28. Hallar el conjunto complementario del resultado del ejercicio anterior. SELECT nomEmp FROM Empleado WHERE salEmp <= 1000000 AND jefeID = '31.840.269'; 29. Hallar los empleados cuyo nombre no contiene la cadena “MA” SELECT nomEmp FROM Empleado WHERE nomEmp LIKE 'Ma%'; 30. Obtener los nombres de los departamentos que no sean “Ventas” ni “Investigación” NI ‘MANTENIMIENTO’, ordenados por ciudad. SELECT nombreDpto, ciudad FROM Departamento WHERE nombreDpto NOT IN ('VENTAS', 'INVESTIGACIÓN','MANTENIMIENTO') ORDER BY ciudad; 31. Obtener el nombre y el departamento de los empleados con cargo 'secretaria' o 'Vendedor', que no trabajan en el departamento de “PRODUCCION”, cuyo salario es superior a $1.000.000, ordenados por fecha de incorporación. SELECT E.nomEmp, E. cargoE, D.nombreDpto FROM Departamento D, Empleado E WHERE cargoE NOT IN ('Secretaria', 'Vendedor') AND salEmp > 1000000 AND E.coddepto = D.coddepto AND E.coddepto NOT IN (SELECT F.coddepto FROM Departamento F WHERE F.nombredpto='PRODUCCIÓN'); 32. Obtener información de los empleados cuyo nombre tiene exactamente 11 caracteres SELECT nomEmp, char_length(nomEmp) FROM Empleado WHERE char_length(nomEmp) = 11; 33. Obtener información de los empleados cuyo nombre tiene al menos 11 caracteres SELECT nomEmp, char_length(nomEmp) FROM Empleado WHERE char_length(nomEmp) >= 11; 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, substring(nomEmp from 1 for 1) FROM Empleado WHERE substring(nomEmp from 1 for 1)='M' AND (salEmp > 800000 OR comisionE > 0) AND codDepto IN (SELECT codDepto FROM DEpartamento WHERE nombreDpto = 'VENTAS'); 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, comisionE FROM Empleado WHERE salEmp >= comisionE/2 AND salEmp <= comisionE ; 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), comisionE FROM Empleado; 37. Obtener la información disponible del empleado cuyo número de documento de identidad sea: '31.178.144', '16.759.060', '1.751.219', '768.782', '737.689', '19.709.802', '31.174.099', '1.130.782' SELECT nDIEmp, nomEmp FROM Empleado WHERE nDIEmp IN ('31.178.144', '16.759.060', '1.751.219', '768.782', '737.689', '19.709.802', '31.174.099', '1.130.782'); 38. Entregar un listado de todos los empleados ordenado por su departamento, y alfabético dentro del departamento. SELECT nDIEmp, nomEmp, codDepto FROM Empleado ORDER BY codDepto, nomEmp; 39. Entregar el salario más alto de la empresa. SELECT nomEmp FROM Empleado WHERE salEmp IN (SELECT MAX(salEmp) FROM Empleado); 40. Entregar el total a pagar por comisiones, y el número de empleados que las reciben. SELECT COUNT nDIEmp, SUM comisionE FROM Empleado WHERE comisionE > 0; 41. Entregar el nombre del último empleado de la lista por orden alfabético. SELECT MAX (nomEmp) FROM Empleado; 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 Empleado; 43. Conocido el resultado anterior, entregar el nombre de los empleados que reciben el salario más alto y más bajo. ¿Cuánto suman estos salarios? SELECT MAX (salEmp), MIN (salEmp), (MAX (salEmp) + MIN (salEmp)) FROM Empleado; 44. Entregar el número de empleados de sexo femenino y de sexo masculino, por departamento. SELECT codDepto, sexEmp, COUNT (nomEmp) FROM Empleado GROUP BY codDepto, sexEmp; 45. Hallar el salario promedio por departamento. SELECT codDepto, AVG(salEmp) FROM Empleado GROUP BY codDepto; 46. Hallar el salario promedio por departamento, considerando aquellos empleados cuyo salario supera $900.000, y aquellos con salarios inferiores a $575.000. Entregar el código y el nombre del departamento. SELECT N.codDepto, D.nombreDpto, N.pro FROM Departamento D, (SELECT codDepto, AVG(salEmp) AS pro FROM Empleado WHERE salEmp > 900000 AND salEmp > 575000 GROUP BY codDepto) N WHERE N.codDepto = D.codDepto; 47. Entregar la lista de los empleados cuyo salario es mayor o igual que el promedio de la empresa. Ordenarlo por departamento. SELECT E.codDepto, E.nomEmp, E.salEmp, N.proT FROM Empleado E, (SELECT AVG(salEmp) AS proT FROM Empleado) N WHERE E.salEmp >= N.proT ORDER BY E.codDepto; 48. Hallar los departamentos que tienen más de tres (3) empleados. Entregar el número de empleados de esos departamentos. SELECT N.codDepto, D.nombreDpto, N.nro FROM Departamento D, (SELECT codDepto, COUNT(nDIEmp) AS nro FROM Empleado GROUP BY codDepto HAVING COUNT(nDIEmp)>3) N WHERE N.codDepto = D.codDepto; 49. Obtener la lista de empleados jefes, que tienen al menos un empleado a su cargo. Ordene el informe inversamente por el nombre. SELECT J.nDIEmp, J.nomEmp FROM Empleado J, (SELECT S.jefeID FROM Empleado E, Empleado S WHERE E.nDIEmp = S.jefeID GROUP BY S.jefeID HAVING COUNT (S.nDIEmp)>= 1) P WHERE J.nDIEmp = P.jefeID; 50. Hallar los departamentos que no tienen empleados SELECT D.nombreDpto, nCar, proS FROM (Departamento D NATURAL LEFT OUTER JOIN (SELECT codDepto, COUNT (cargoE) AS nCar, AVG (salEmp) AS proS FROM Empleado GROUP BY codDepto) E )ORDER BY nombreDpto; 51. Entregar un reporte con el número de cargos en cada departamento y cuál es el promedio de salario de cada uno. Indique el nombre del departamento en el resultado SELECT D.nombreDpto, nCar, proS FROM (Departamento D NATURAL LEFT OUTER JOIN (SELECT codDepto, COUNT (cargoE) AS nCar, AVG (salEmp) AS proS FROM Empleado GROUP BY codDepto) E) ORDER BY nombreDpto; 52. Entregar el nombre del departamento cuya suma de salarios sea la más alta, indicando el valor de la suma. SELECT D.nombreDpto, E.sSalD FROM Departamento D, (SELECT codDepto, sSalD FROM SumSalar2 S2, SumSalar S1 WHERE S2.sSalD = S1.sumS) E WHERE D.codDepto = E.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 Empleado D, (SELECT jefeId, COUNT(nDIEmp) AS noSu FROM Empleado WHERE jefeId IS NOT NULL GROUP BY jefeId) E WHERE D.nDIEmp = E.jefeId ORDER BY E.noSu DESC