Hola a todos, hoy os dejo una serie de ejercicios de consultas MySQL de la base de datos Empleados y departamentos que hemos hecho en el canal de Youtube.
Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución.
Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.
Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este post o enviándonos un e-mail a administrador@discoduroderoer.es
Aquí os dejo la base de datos con la que vamos a trabajar.
Aquí te dejo un manual sobre como importar la base de datos.
Importar una base de datos o esquema en MySQL desde MySQL Workbench
Os dejo el modelo Entidad – Relación de la base de datos.
Al final de cada ejercicio, os muestro una foto con el resultado esperado.
1. Obtener los datos completos de los empleados.
2. Obtener los datos completos de los departamentos.
3. Obtener los datos de los empleados con cargo ‘Secretaria’.
4. Obtener el nombre y salario de los empleados.
5. Obtener los datos de los empleados vendedores, ordenado por nombre.
Spoiler Inside | SelectShow> |
---|---|
select * from empleados where lower(cargoE)='vendedor' order by nomEmp asc; |
6. Listar el nombre de los departamentos.
7. Obtener el nombre y cargo de todos los empleados, ordenado por salario.
8. Listar los salarios y comisiones de los empleados del departamento 2000, ordenado por comisión.
9. Listar todas las comisiones.
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
Spoiler Inside | SelectShow> |
---|---|
select nomemp, salemp, (salemp+500000) as 'pago estimado' from empleados where codDepto = '3000' order by nomemp; |
11. Obtener la lista de los empleados que ganan una comisión superior a su sueldo.
12. Listar los empleados cuya comisión es menor o igual que el 30% de su sueldo.
Spoiler Inside | SelectShow> |
---|---|
select nomemp,salemp,comisione from empleados where comisionE <= (salEmp*0.3); |
13.Elabore un listado donde para cada fila, figure ‘Nombre’ y ‘Cargo’ antes del valor respectivo para cada 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’.
Spoiler Inside | SelectShow> |
---|---|
select nDIEmp,salemp,comisione from empleados 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.
Spoiler Inside | SelectShow> |
---|---|
select nomemp, cargoe from empleados where lower(nomemp) > 'j' and lower(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
Spoiler Inside | SelectShow> |
---|---|
select salemp, comisione, (salemp + comisione) as 'Salario total', ndiemp from empleados where comisione > 1000000 order by ndiemp; |
17. Obtener un listado similar al anterior, pero de aquellos empleados que NO tienen comisión
Spoiler Inside | SelectShow> |
---|---|
select salemp, comisione, (salemp + comisione) as 'Salario total', ndiemp from empleados where comisione = 0 order by ndiemp; |
18. Hallar los empleados cuyo nombre no contiene la cadena «MA»
19. Obtener los nombres de los departamentos que no sean “Ventas” ni “Investigación” NI
‘MANTENIMIENTO’.
Spoiler Inside | SelectShow> |
---|---|
select nombreDpto from departamentos where lower(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.
Spoiler Inside | SelectShow> |
---|---|
select e.nomemp, d.nombreDpto from empleados e, departamentos d where e.codDepto=d.codDepto and (lower(e.cargoE)='secretaria' or lower(e.cargoE)='vendedor') and lower(d.nombreDpto)<>'produccción' and e.salEmp > 1000000 order by e.fecIncorporacion; |
21. Obtener información de los empleados cuyo nombre tiene exactamente 11 caracteres
22. Obtener información de los empleados cuyo nombre tiene al menos 11 caracteres
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’
Spoiler Inside | SelectShow> |
---|---|
select e.nomEmp, d.nombreDpto, e.salEmp from empleados e, departamentos d where e.codDepto=d.codDepto and lower(e.nomEmp) like 'm%' and (e.salEmp > 800000 or e.comisionE>0) and lower(d.nombreDpto)<>'ventas'; |
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.
Spoiler Inside | SelectShow> |
---|---|
select nomEmp, salEmp, comisionE from empleados where salEmp between (comisionE/2) and comisionE; |
25. Mostrar el salario más alto de la empresa.
26. Mostrar cada una de las comisiones y el número de empleados que las reciben. Solo si tiene comisión.
Spoiler Inside | SelectShow> |
---|---|
select comisionE, count(*) as 'Num empleados' from empleados group by comisionE having comisionE > 0; |
27. Mostrar el nombre del último empleado de la lista por orden alfabético.
28. Hallar el salario más alto, el más bajo y la diferencia entre ellos.
Spoiler Inside | SelectShow> |
---|---|
select max(salemp) as 'Salario mayor', min(salemp) as 'Salario menor', max(salemp) - min(salemp) as 'Diferencia' from empleados; |
29. Mostrar el número de empleados de sexo femenino y de sexo masculino, por departamento.
Spoiler Inside | SelectShow> |
---|---|
select codDepto, sexemp, count(*) from empleados group by codDepto, sexemp; |
30. Hallar el salario promedio por departamento.
31. Mostrar la lista de los empleados cuyo salario es mayor o igual que el promedio de la empresa. Ordenarlo por departamento.
Spoiler Inside | SelectShow> |
---|---|
select nDIEmp, salEmp from empleados where salemp >= (select avg(salemp) from empleados); |
32. Hallar los departamentos que tienen más de tres empleados. Mostrar el número de empleados de esos departamentos.
Spoiler Inside | SelectShow> |
---|---|
select d.codDepto, d.nombreDpto, count(*) as 'Num empleados' from departamentos d, empleados e where d.codDepto=e.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 mas de dos empleados (2 incluido).
Spoiler Inside | SelectShow> |
---|---|
select j.nDIEmp, j.nomEmp, count(*) as 'Num Empleados' from empleados e, empleados 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
Spoiler Inside | SelectShow> |
---|---|
select d.codDepto, d.nombreDpto from departamentos d, empleados e where d.codDepto=e.codDepto group by d.codDepto having count(*) = 0; |
35. Mostrar el nombre del departamento cuya suma de salarios sea la más alta, indicando el valor de la suma.
Spoiler Inside | SelectShow> |
---|---|
select d.nombreDpto, sum(e.salEmp) from departamentos d, empleados e where d.codDepto=e.codDepto group by d.nombreDpto order by sum(e.salEmp) desc limit 1; |
Os dejo videos donde realizo estas consultas:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
si dejas el script de la base de datos quizas mejor. Gracias
NOPUDE DESCRAGA LA BASE DE DATOS COMPLETA
LA Nº 8 ES ASI , HAY QUE CORREGIR
select distinct salemp,comisione
from empleados
where lower(coddepto)=’2000′
ORDER BY comisione
Oye podrias recomendarme un simulador online donde pueda correr esto para practicar?
he probado algunos pero todos me dan error
podrian hacerlo mas claro
Coméntame que no entiendes
Hola, buen día. Gracias al compañero que ha compartido todo este conocimiento, ojalá pueda seguir publicando referente a este tema para que algunos usuarios podamos avanzar aún más en este ambiente. Gracias. Saludos desde Colombia.
no está bien el enlace de la descarga….
Pregunto si se pudiera arreglar.
GRACIAS
Esta bien, solo dale a saltar la publicidad.
Saludos.
Hola necesito ayuda para un deber Final para pasar de clase , si alguien me podría ayudar por favor , se me hace tan dificil dejo mi correo por si alguno está aburrió y me quiere ayudar : fitoyona18@gmail.com graciassss