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 * FROM empleado WHERE cargoE='Secretaria';
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 * FROM empleado
WHERE cargoE='Vendedor'
ORDER BY nomEmp ASC;
6. Listar el nombre de los departamentos:
SELECT DISTINCT nombreDpto FROM departamento;
7. Obtener el nombre y cargo de todos los empleados, ordenado por salario:
SELECT nomEmp, cargoE, salEmp
FROM empleado
ORDER BY salEmp;
8. Listar los salarios y comisiones de los empleados del departamento 2000, ordenado por comisión.
SELECT salEmp, comisionE
FROM empleado
WHERE codDepto='2000';
9. Listar todas las comisiones.
SELECT DISTINCT comisionE FROM empleado;
10. 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,(salEmp+500000)
AS 'Salario + Bonificacion'
FROM empleado
WHERE codDepto='3000'
ORDER BY nomEmp ;
11. Obtener la lista de los empleados que ganan una comisión superior a su sueldo.
SELECT nomEmp,comisionE,salEmp FROM empleado
WHERE comisionE > salEmp;
12. Listar los empleados cuya comisión es menor o igual que el 30 % de su sueldo.
SELECT nomEmp, salEmp, comisionE FROM empleado
WHERE comisionE <= (salEmp*0.30);
13. Elabore un listado donde para cada fila, figure 'Nombre' y 'Cargo' antes del valor respectivo para cada empleado.
SELECT nomEmp
AS 'Nombre', cargoE AS 'Cargo'
FROM empleado;
14. Hallar el salario y la comisión de aquellos empleados cuyo número de documento de identidad es superior al '19.709.802'.
SELECT salEmp,comisionE,nDIEmp
FROM empleado
WHERE nDIEmp > '19.709.802';
15. Muestra los empleados cuyo nombre empiece entre las letras J y Z (rango). Liste estos empleados y su cargo por orden alfabético.
SELECT nomEmp, cargoE FROM empleado
WHERE nomEmp BETWEEN 'J%' AND 'Z%'
ORDER BY nomEmp;
Otra forma seria :
SELECT nomEmp, cargoE FROM empleado
WHERE nomEmp > 'J' AND nomEmp < 'Z'
ORDER BY nomEmp;
16. 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 salEmp, comisionE, nDIEmp, nomEmp,
(salEmp+comisionE) AS 'Salario Total'
FROM empleado WHERE comisionE > 1000000
ORDER BY nDIEmp;
17. Obtener un listado similar al anterior, pero de aquellos empleados que no tienen comisión
SELECT salEmp, comisionE, nDIEmp, nomEmp,
(salEmp+comisionE) AS 'Salario Total'
FROM empleado WHERE comisionE <= 0
ORDER BY nDIEmp;
18. Hallar los empleados cuyo nombre no contiene la cadena 'MA'.
SELECT nomEmp FROM empleado
WHERE nomEmp NOT LIKE '%MA%';
19. Obtener los nombres de los departamentos que no sean 'Ventas' ni 'Investigación' ni 'MANTENIMIENTO'.
SELECT * FROM departamento
WHERE nombreDpto NOT IN
('Ventas','Investigación','MANTENIMIENTO');
20. 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, d.nombreDpto, e.cargoE, e.salEmp, e.fecIncorporacion
FROM empleado e, departamento d
WHERE e.codDepto = d.codDepto
AND e.salEmp > 1000000
AND (e.cargoE)='Vendedor'
OR (e.cargoE)='Secretaria'
AND (d.nombreDpto) <> 'PRODUCCIÓN'
ORDER BY e.fecIncorporacion
21. Obtener información de los empleados cuyo nombre tiene exactamente 11 caracteres:
SELECT * FROM empleado
WHERE char_length(nomEmp) = 11;
22. Obtener información de los empleados cuyo nombre tiene al menos 11 caracteres
SELECT * FROM empleado
WHERE char_length(nomEmp) < 11;
23. 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 e.nomEmp, d.nombreDpto, e.comisionE, e.salEmp
FROM empleado e, departamento d
WHERE e.codDepto = d.codDepto
AND e.nomEmp LIKE 'M%'
AND (d.nombreDpto) = 'VENTAS'
AND (e.salEmp > 800000 OR e.comisionE > 0)
;
24. 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 BETWEEN(comisionE/2)
AND comisionE;
25. Mostrar el salario más alto de la empresa.
SELECT nomEmp, salEmp,
MAX(salEmp) AS 'Salario mas Alto'
FROM empleado;
26. Mostrar cada una de las comisiones y el número de empleados que las reciben. Solo si tiene comision.
SELECT comisionE,
COUNT(*)
AS 'Numero Empleados'
FROM empleado
GROUP BY comisionE
HAVING comisionE > 0;
27. Mostrar el nombre del último empleado de la lista por orden alfabético.
SELECT nomEmp FROM empleado
ORDER BY nomEmp DESC
LIMIT 1;
Otra forma:
SELECT MAX(nomEmp) AS 'Ultimo Empleado'
FROM empleado;
28. Hallar el salario más alto, el más bajo y la diferencia entre ellos.
SELECT MAX(salEmp) AS 'Salario más Alto'
, MIN(salEmp) AS 'Salario más Bajo'
, MAX(salEmp)- MIN(salEmp) AS 'Diferencia'
FROM empleado;
29. Mostrar el número de empleados de sexo femenino y de sexo masculino, por departamento.
SELECT codDepto, sexEmp, COUNT(*)
FROM empleado
GROUP BY codDepto, sexEmp;
30. Hallar el salario promedio por departamento.
SELECT codDepto, AVG(salEmp) AS 'Salario Promedio'
FROM empleado
GROUP BY codDepto;
31. Mostrar la lista de los empleados cuyo salario es mayor o igual que el promedio de la empresa. Ordenarlo por departamento.
SELECT nomEmp, salEmp, codDepto FROM empleado
WHERE salEmp >= (
SELECT AVG(salEmp) FROM empleado)
ORDER BY codDepto ;
32. Hallar los departamentos que tienen más de 3 empleados así como su nº de empleados.
SELECT d.codDepto, d.nombreDpto
FROM empleado e, departamento d
WHERE e.codDepto = d.codDepto
GROUP BY d.codDepto
HAVING count(*) >= 3;
33. Mostrar el código y nombre de cada jefe, junto al número de empleados que dirige. Solo los que tengan más de dos empleados (2 incluido).
select j.nDIEmp, j.nomEmp, count(*)
as 'Num Empleados'
from empleado e, empleado j
where e.jefeID = j.nDIEmp
group by j.nomEmp
having count(*)>= 2
order by count(*) desc;
34. Hallar los departamentos que no tienen empleados*
select d.codDepto, d.nombreDpto
from departamento d, empleado e
where d.codDepto = e.codDepto
group by d.codDepto
having count(*) = 0;
*No hay ninguno con cero empleados. Si probamos con 1 si hay 3.
35. Mostrar el nombre del departamento cuya suma de salarios sea la más alta, indicando el valor de la suma:
select d.nombreDpto, SUM(e.salEmp)
from departamento d, empleado e
where d.codDepto = e.codDepto
group by d.nombreDpto
order by SUM(e.salEmp) desc
limit 1;
No hay comentarios:
Publicar un comentario