Adrián Jareño
PRACTICA DML
-- 1. Obtener todos los datos de todos los empleados.
SELECT * FROM emp;
-- 2. Obtener todos los datos de todos los departamentos.
SELECT * FROM dept;
-- 3. Obtener todos los datos de los administrativos (su trabajo es, en inglés, ’CLERK’).
SELECT * FROM emp WHERE job="Clerk";
-- 4. Igual que el anterior, pero ordenado por el nombre.
SELECT * FROM emp WHERE job="Clerk" ORDER BY ename;
Adrián Jareño
-- 5. Obtén el mismo resultado de la pregunta anterior, pero modificando la sentencia
SQL.
SELECT * FROM emp WHERE job="Clerk" ORDER BY ename;
-- 6. Obtén el número (código), nombre y salario de los empleados.
SELECT empno, ename, sal FROM emp;
-- 7. Lista los nombres de todos los departamentos.
SELECT dname FROM dept;
-- 8. Igual al anterior, pero ordenándolos por nombre.
SELECT dname FROM dept ORDER BY dname;
Adrián Jareño
-- 9. Igual al anterior, pero ordenándolo por la ciudad (no se debe seleccionar la ciudad en
el resultado).
SELECT dname FROM dept ORDER BY loc;
-- 10. Igual al anterior, pero el resultado debe mostrarse ordenado por la ciudad en orden
inverso.
SELECT dname FROM dept ORDER BY loc;
-- 11. Obtener el nombre y empleo de todos los empleados, ordenado por salario.
SELECT ename, job FROM emp ORDER BY sal;
Adrián Jareño
-- 12. Obtener el nombre y empleo de todos los empleados, ordenado primero por su
trabajo y luego por su salario.
SELECT ename, job FROM emp ORDER BY job AND sal;
-- 13. Igual al anterior, pero ordenando inversamente por empleo y normalmente por
salario.
SELECT ename, job FROM emp ORDER BY job, sal DESC;
-- 14. Obtén los salarios y las comisiones de los empleados del departamento 30.
SELECT sal, comm FROM emp WHERE depton=30;
Adrián Jareño
-- 15. Igual al anterior, pero ordenado por comisión.
SELECT sal, comm FROM emp WHERE depton=30 ORDER BY comm;
-- 16. Obtén las comisiones de los empleados de forma que no se repitan.
SELECT DISTINCT comm FROM emp;
-- 17. Obtén el nombre de empleado y su comisión SIN FILAS repetidas.
SELECT DISTINCT ename, comm FROM emp;
Adrián Jareño
-- 18. Obtén los nombres de los empleados y sus salarios, de forma que no se repitan
filas.
SELECT DISTINCT ename, sal FROM emp;
-- 19. Obtén las comisiones de los empleados y sus números de departamento, de forma
que no se repitan filas.
SELECT DISTINCT comm, depton FROM emp;
-- 20. Obtén los nuevos salarios de los empleados del departamento 30, que resultarían
de sumar a su salario una gratificación de 1000. Muestra también los nombres de los
empleados.
SELECT ename, sal + 1000 FROM emp WHERE depton=30;
Adrián Jareño
-- 21. Lo mismo que la anterior, pero mostrando también su salario original, y haz que la
columna que almacena el nuevo salario se denomine NUEVO SALARIO.
SELECT ename, sal + 1000 AS "Nuevo salario", sal AS "Salario normal" FROM emp WHERE
depton=30;
-- 22. Halla los empleados que tienen una comisión superior a la mitad de su salario.
SELECT * FROM emp WHERE comm>sal/2;
-- 23. Halla los empleados que no tienen comisión, o que la tengan menor o igual que el
25% de su salario.
SELECT * FROM emp WHERE comm < sal * 0.25;
-- 24. Obtén una lista de nombres de empleados y sus salarios ordenado por salario
SELECT ename, sal FROM emp ORDER BY sal;
Adrián Jareño
-- 25. Hallar el código, salario y comisión de los empleados cuyo código sea mayor que
7500.
SELECT empno, sal, comm FROM emp WHERE empno < 7500;
-- 26. Obtén todos los datos de los empleados que contengan la letra “J”
SELECT * FROM emp WHERE ename LIKE "%j%";
-- 27. Obtén el salario, comisión y salario total (salario+comision) de los empleados con
comisión(NO sea NULL), ordenando el resultado por número de empleado.
SELECT sal, comm, sal + comm AS "salario total" FROM emp WHERE comm > 0 ORDER BY
empno;
-- 28. Lista la misma información que el anterior, pero para todos los empleados.
SELECT sal, comm, sal + comm AS "salario total" FROM emp ORDER BY empno;
Adrián Jareño
-- 29. Muestra el nombre de los empleados que, teniendo un salario superior a 1000,
tengan como jefe al empleado cuyo código es 7698.
SELECT ename FROM emp WHERE sal>1000 AND mgr="7698";
-- 30. Halla los datos contrarios del resultado del ejercicio anterior(usando NOT).
SELECT ename FROM emp WHERE NOT sal>1000 AND mgr="7698";
-- 31. Indica para cada empleado el porcentaje que supone su comisión sobre su salario,
ordenando el resultado por el nombre del mismo.
SELECT
-- 32. Hallar los empleados del departamento 10 cuyo nombre no contiene la cadena ‘LA.’
SELECT * FROM emp WHERE depton=10 AND NOT ename="%LA%";
-- 33. Obtén los empleados que no son supervisados por ningún otro.
SELECT * FROM emp WHERE empno=mgr;
Adrián Jareño
-- 34. Obtén los nombres de los departamentos que no sean Ventas (SALES) ni
investigación (RESEARCH). Ordena el resultado por la localidad del departamento.
SELECT dname FROM dept WHERE NOT dname="Sales" AND NOT dname="Research"
ORDER BY loc;
-- 35. Deseamos conocer el nombre de los empleados y el código del departamento de
los administrativos(CLERK) que no trabajan en el departamento 10, y cuyo salario es
superior a 800, ordenado por fecha de contratación.
SELECT ename, empno FROM emp WHERE job="Clerk" AND sal>800 AND NOT
depton=10;
-- 36. Para los empleados que tengan comisión, obtén sus nombres y el cociente entre su
salario y su comisión (excepto cuando la comisión sea cero), ordenando el resultado por
nombre.
SELECT ename, sal - comm FROM emp WHERE comm>0;
-- 37. Lista toda la información sobre los empleados cuyo nombre completo tenga
exactamente 5 caracteres.
SELECT * FROM emp WHERE ename="_____";
Adrián Jareño
-- 38. Lo mismo, pero para los empleados cuyo nombre tenga tres letras.
SELECT * FROM emp WHERE ename="___";
-- 39. Halla los datos de los empleados que, o bien su nombre empieza por A y su salario
es superior a 1000, o bien reciben comisión y trabajan en el departamento 30.
SELECT * FROM emp WHERE ename="A%" AND sal>1000 OR depton=30 AND comm>0;
-- 40. Halla el nombre, el salario y el sueldo total (salario+comision) de todos los
empleados, ordenando el resultado primero por salario y luego por el sueldo total.
SELECT ename, sal, sal + comm AS "sueldo total" FROM emp ORDER BY sal AND "sueldo
total";
Adrián Jareño
-- 41. Obtén el nombre, salario y la comisión de los empleados que perciben un salario
que está entre la mitad de la comisión y la propia comisión.
SELECT ename, sal, comm FROM emp WHERE comm>sal>(comm/2);
-- 42. Obtén el complementario del anterior. Son los empleados que NO cumplen esa
condición.
SELECT ename, sal, comm FROM emp WHERE NOT comm>sal>(comm/2);
-- 43. Lista los nombres y empleos de aquellos empleados cuyo empleo acaba en MAN y
cuyo nombre empieza por A.
SELECT ename, job FROM emp WHERE ename="A%" AND job="%man";
Adrián Jareño
-- 44. Lista los empleos de aquellos empleados cuyo empleo acaba en MAN y comienzan
por A.
SELECT job FROM emp WHERE job="A%man";
-- 45. Halla los nombres de los empleados cuyo nombre no contengan la letra A ni la B.
SELECT ename FROM emp WHERE ename NOT LIKE "%A%" AND ename NOT LIKE "%B%";
-- 46. Suponiendo que el año próximo la subida del sueldo total de cada empleado será
del 6%, halla los nombres y el salario total actual, del año próximo de cada empleado.
SELECT ename, sal * 1.06 AS salario proximo FROM emp;
Adrián Jareño
-- 47. Lista los nombres y fecha de contratación de aquellos empleados que no son
vendedores (SALESMAN).
SELECT ename, hiredate FROM emp WHERE NOT job="SALESMAN";
-- 48. Obtén la información disponible de los empleados cuyo número es uno de los
siguientes: 7844, 7900, 7521, 7521, 7782, 7934, 7678 y 7369, pero que no sea uno de los
siguientes: 7902, 7839, 7499 ni 7878. La sentencia no debe complicarse
innecesariamente, y debe dar el resultado correcto independientemente de lo empleados
almacenados en la base de datos.
SELECT * FROM emp WHERE empno IN (7844, 7900, 7521, 7521, 7782, 7934, 7678, 7369)
AND empno NOT IN (7902, 7839, 7499, 7878);
Adrián Jareño
-- 49. Ordena los empleados por su código de departamento, y luego de manera
descendente por su número de empleado.
SELECT * FROM emp ORDER BY depton, empno DESC;
-- 50. Para los empleados que tengan como jefe a un empleado con código mayor que el
suyo, obtén los que reciben de salario más de 1000 y menos de 2000, o que están en el
departamento 30.
SELECT * FROM emp WHERE (sal BETWEEN 1000 AND 2000 AND mgr IN (SELECT empno
FROM emp WHERE empno < mgr)) OR depton = 30;
-- 51. Obtén el salario más alto de la empresa, el total destinado a comisiones y el número
de empleados.
SELECT MAX(sal) AS salario alto, SUM(comm) AS comision total, COUNT(*) AS numero
empleados FROM emp;
Adrián Jareño
-- 52. Halla los datos de los empleados cuyo salario es mayor que el del empleado de
código 7934, ordenando por el salario.
SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE empno=7934) ORDER
BY sal;
-- 53. Obtén información en la que se reflejen los nombres, empleos y salarios tanto de los
empleados que superan en salario a Allen como del propio Allen.
SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename="Allen")
ORDER BY sal;
Adrián Jareño
-- 54. Halla el nombre el último empleado por orden alfabético.
SELECT ename FROM emp ORDER BY ename DESC LIMIT 1;
-- 55. Halla el salario más alto, el más bajo, y la diferencia entre ellos.
SELECT MAX(sal) AS salario mas alto, MIN(sal) AS salario mas bajo, MAX(sal)-MIN(sal) AS
diferencia de salarios FROM emp;
-- 56. Sin conocer los resultados del ejercicio anterior, ¿quienes reciben el salario más
alto y el más bajo, y a cuánto ascienden estos salarios?
SELECT ename, sal FROM emp WHERE sal = (SELECT MAX(sal) FROM emp) OR
sal=(SELECT MIN(sal) FROM emp);
-- 57. Considerando empleados con salario menor de 5000, halla la media de los salarios
de los departamentos cuyo salario mínimo supera a 900. Muestra también el código y el
nombre de los departamentos.
Adrián Jareño
-- 58. ¿Qué empleados trabajan en ciudades de más de cinco letras? Ordena el resultado
inversamente por ciudades y normalmente por los nombres de los empleados.
SELECT ename, loc FROM emp JOIN dept ON [Link] = [Link] WHERE
LENGTH(loc)>5 ORDER BY loc DESC, ename;
-- 59. Halla los empleados cuyo salario supera o coincide con la media del salario de la
empresa.
SELECT * FROM emp WHERE sal>=(SELECT AVG(sal) FROM emp);
-- 60. Obtén los empleados cuyo salario supera al de sus compañeros de departamento.
-- 61. ¿Cuántos empleos diferentes, cuántos empleados, y cuantos salarios diferentes
encontramos en el departamento 30, y a cuánto asciende la suma de salarios de dicho
departamento?
-- 62. ¿Cuántos empleados tienen comisión?
SELECT COUNT(*) FROM emp WHERE comm IS NOT NULL;
Adrián Jareño
-- 63. ¿Cuántos empleados tiene el departamento 20?
SELECT COUNT(*) FROM emp WHERE depton = 20;
-- 64. Halla los departamentos que tienen más de tres empleados, y el número de
empleados de los mismos.
-- 65. Obtén los empleados del departamento 10 que tienen el mismo empleo que alguien
del departamento de Ventas. Desconocemos el código de dicho departamento.
-- 66. Halla los empleados que tienen por lo menos un empleado a su mando, ordenados
inversamente por nombre.
SELECT * FROM emp WHERE empno IN (SELECT DISTINCT mgr FROM emp);
-- 67. Obtén información sobre los empleados que tienen el mismo trabajo que algún
empleado que trabaje en Chicago.
Adrián Jareño
-- 68. ¿Qué empleos distintos encontramos en la empresa, y cuántos empleados
desempeñan cada uno de ellos?
SELECT job, COUNT(*) AS numero de empleados FROM emp GROUP BY job;
-- 69. Halla la suma de salarios de cada departamento.
SELECT depton, SUM(sal) AS suma de salarios FROM emp GROUP BY depton;
-- 70. Obtén todos los departamentos sin empleados.
SELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT depton FROM emp);
-- 71. Halla los empleados que no tienen a otro empleado a sus ´ordenes.
SELECT * FROM emp WHERE empno NOT IN (SELECT DISTINCT mgr FROM emp);
Adrián Jareño
-- 72. ¿Cuántos empleados hay en cada departamento, y cuál es la media anual del
salario de cada uno (el salario almacenado es mensual)? Indique el nombre del
departamento para clarificar el resultado.
-- 73. Halla los empleados del departamento 30, por orden descendente de comisión
SELECT * FROM emp WHERE depton = 30 ORDER BY comm DESC;
-- 74. Obtén los empleados que trabajan en Dallas o New York.