domingo, 17 de enero de 2021

Ejercicio SQL Consultas SELECT

 


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

memory cards gridlock

 Privacy Policy for Memory Cards Gridlock Last Updated: April 23, 2023 This Privacy Policy describes the data practices of Jose Jordan (&quo...