0% encontró este documento útil (0 votos)
22 vistas21 páginas

Consultas SQL para Gestión de Empleados

Cargado por

adrijareno
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
22 vistas21 páginas

Consultas SQL para Gestión de Empleados

Cargado por

adrijareno
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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.

También podría gustarte