You are on page 1of 39

UNIVERSIDAD NACIONAL DEL ALTIPLANO PUNO

FACULTAD DE INGENIERA MECNICA ELCTRICA, ELECTRNICA Y SISTEMAS

ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS

100 CONSULTAS BSICAS DE SQL

SENTENCIAS SELECT

Ing. ELMER COYLA IDME

PUNO PER

2011

Consultas SQL

DEDICATORIA

todos los grandes maestros de la Escuela de Post Grado de la

Universidad Nacional de Educacin Enrique Guzman y Valle La Cantuta de la Mencin de Docencia Universitaria, a todos los estudiantes

de la Escuela Profesional de Ingeniera de Sistemas de la Universidad Nacional del Altiplano de Puno de la Asignatura de Tecnologas de Desarrollo de Aplicaciones Semestre 2007 I, a los estudiantes el Instituto Superior Pedaggico Pblico Alianza Ichua - Blgica de Moquegua de la Carrera

Profesional de Computacin e Informtica Promocin 2007 y a los estudiantes del Instituto Superior Tecnolgico Pblico Alianza Ichua - Blgica de la Carrera Profesional de Computacin e Informtica, Promocin 2002 2003 y 2004, por sus valiosas sugerencias, comprensin y nimo; sin ustedes no hubiera sido posible la culminacin de este Solucionario. El Autor.

-2-

Elmer Coyla Idme

PRESENTACION

una de las distintas modalidades del comando SELECT.

l objetivo de este documento es guiar su aprendizaje del comando SELECT del SLQ Server, la idea es que, estando conectado al analizador de consultas, lea este material mientras ejercita simultneamente cada

A lo largo de este solucionario se hace referencia a las tablas departamento (DEPT) y empleado (EMP) de una empresa, usadas en los tutoriales de los productos ORACLE.

Agradezco muy profundamente la comprensin a todos los futuros profesionales, sobre las deficiencias que pudieran existir en la codificacin o razones de error en la digitacin, en las diversas consultas, pero al menos hago un alcance a aquellos que verdaderamente lo necesitan y estoy seguro que a de servir de mucho en su formacin profesional. Le rogamos que cualquier crtica, sugerencia, o inquietud, la dirija a la siguiente direccin elmercoyla@gmail.com, que gustosos lo responder con el nimo de mejorar en futuras ediciones. Elmer Coyla Idme

-3-

Consultas SQL

ESQUEMA SCOTT

CONTENIDO DE LAS TABLAS

-4-

Elmer Coyla Idme

CONSULTAS 1. Obtener los datos completos de los empleados. Consulta: select * from emp Respuesta:

2. Obtener los datos de los departamentos. Consulta: select * from dept Respuesta:

3. Hallar los datos de los administrativos. Consulta: select empno, ename, mgr, sal from emp where job='administrativo' Respuesta:

4. Hallar los datos de los administrativos. Pero ordenado por nombre. Consulta: select empno, ename, job, mgr, sal from emp where job='administrativo' order by ename asc

-5-

Consultas SQL

Respuesta:

5. El mismo pero modificado de alguna forma la sentencia anterior. Consulta: select empno, ename, job, mgr, sal from emp where job='administrativo' and sal > 1000 order by ename Respuesta:

6. Obtener el nombre y el salario de los empleados. Consulta: select ename,sal from emp Respuesta:

7. Hallar el nombre de los departamentos. Consulta: select dname from dept

-6-

Elmer Coyla Idme

Respuesta:

8. Hallar el nombre de los departamentos. Pero ordenado por nombre. Consulta: select dname from dept order by dname asc Respuesta:

9. Lo mismo pero ordenado por la ciudad. Consulta: select dname, loc from dept order by loc asc Respuesta:

10. Hallar los nombres de los departamentos ordenados por su ciudad, pero en orden inverso. Consulta: select dname, loc from dept order by loc desc Respuesta:

11. Obtener el nombre y el empleo de los empleados, ordenados por salario. Consulta: select ename, job, sal from emp order by sal

-7-

Consultas SQL

Respuesta:

12. Idntico Pero ordenados ahora por empleo y salario. Consulta: select ename, job, sal from emp order by job, sal Respuesta:

13. Idntico. Pero ordenado inversamente por empleo y normalmente por salario. Consulta: select ename, job, sal from emp order by job desc, sal asc

-8-

Elmer Coyla Idme

Respuesta:

14. Obtener los salarios y las comisiones de los empleados del departamento 30. Consulta: select deptno,ename, sal, comm from emp where deptno =30 Respuesta:

15. Idntico, pero ordenado por comisin. Consulta: select deptno,ename, sal, comm from emp where deptno =30 order by comm asc Respuesta:

16. Obtener las distintas comisiones. Consulta: select distinct comm from emp

-9-

Consultas SQL

Respuesta:

17. Hallar las distintas comisiones y los nombres de los empleados. Consulta: select distinct comm, ename from emp where comm is not null Respuesta:

18. Hallar los distintos salarios. Consulta: select distinct sal from emp Respuesta:

19. Obtener comisiones y los nmeros de los departamentos posibles de la empresa, de manera que no se repita. Consulta: select distinct comm, deptno from emp where comm is not null

- 10 -

Elmer Coyla Idme

Respuesta:

20. Obtenga los nuevos salarios que resultaran de sumar a los empleados 30 una nueva gratificacin de 1000 unidades monetarias. Consulta: select deptno, sal +1000 AS 'NUEVO SALARIO' from emp where deptno=30 Respuesta:

21. Idntico, pero obteniendo tambin el salario anterior. Consulta: select deptno, sal, sal +1000 AS 'NUEVO SALARIO' from emp where deptno=30 Respuesta:

22. Hallar los empleados que tienen una comisin superior a la mitad de su salario. Consulta: select ename from emp where comm >(sal/2) Respuesta:

- 11 -

Consultas SQL

23. Hallar los empleados cuya comisin es menor o igual que el 25% del sueldo. Consulta: select ename from emp where comm <=(sal*0.25) Respuesta:

24. Haga que en cada fila figura nombre y puesto anteponindose a su respectivo valor. Consulta: select 'Nombre:', ename, 'Puesto:', job from emp Respuesta:

25. Hallar el salario y la comisin de los empleados cuyo nmero de empleado supera a 7500. Consulta: select empno,sal, comm from emp where empno>7500

- 12 -

Elmer Coyla Idme

Respuesta:

26. Si dividimos a los empleados en dos grupos A y B, empezando los del grupo B en la letra J, Obtn los nombres y empleos de los del grupo B, por orden alfabtico. Consulta: select ename, job from emp where substring(ename,1,1)>'j' order by ename asc Respuesta:

27. Obtener el salario, la comisin y el salario total (salario + comisin) de los empleados con comisin, ordenado por numero de empleado. Consulta: select sal, comm, (sal+comm) as 'salario total' from emp where comm is not null order by empno asc Respuesta:

- 13 -

Consultas SQL

28. Idntico, pero para los que no tienen comisin. Consulta: select sal, comm, (sal) as 'salario total' from emp where comm is null order by empno asc Respuesta:

29. Hallar el nombre de los empleados que teniendo un salario superior a 1000, tienen como director al empleado de cdigo 7698. Consulta: select ename, mgr from emp where sal > 1000 and mgr =7698 Respuesta:

30. Hallar el conjunto complementario del resultado del ejercicio anterior. Consulta: select ename, mgr from emp where sal < 1000 and mgr <>7698 Respuesta:

31. Hallar el porcentaje que supone la comisin sobre el salario total ordenado por nombre. Consulta: select ename , sal+comm as 'salario total', comm, round((100*comm/(sal+comm)),0) as 'porcentaje' from emp where comm is not null order by ename

- 14 -

Elmer Coyla Idme

Respuesta:

32. Hallar los empleados del departamento 10 cuyo nombre contenga la cadena LA Consulta: select ename from emp where deptno = 10 and ename not like '%la%' Respuesta:

33. Obtener los empleados que no son supervisados por ningn otro. Consulta: select ename, mgr from emp where mgr is null Respuesta:

34. Obtener los nombres de los departamentos que no sean SALES ni RESEARCH, ordenados por localidad. Consulta: select dname from dept where not dname='ventas' and not dname ='investigacion' order by loc Respuesta:

35. Deseamos conocer el nombre y departamento de los administrativos que no trabajan en el departamento 10 y cuyo salario es superior a 800, ordenados por la fecha de incorporacin. Consulta: select ename, deptno, sal , hiredate from emp where job='administrativo' and deptno<>10 and sal > 800 order by hiredate asc

- 15 -

Consultas SQL

Respuesta:

36. Para los empleados que tienen comisin obtener sus nombres en orden alfabtico y el cociente entre salarios y comisin. Consulta: select ename, comm , sal/comm from emp where comm is not null order by ename Respuesta:

37. Obtener informacin de empleados cuyos nombre contiene exactamente 5 caracteres. Consulta: select ename from emp where len(ename)=5 Respuesta:

38. Idntico, pero cuyo nombre contengan al menos cinco caracteres. Consulta: select ename from emp where len(ename)>=5

- 16 -

Elmer Coyla Idme

Respuesta:

39. Hallar los datos de los empleados para los que, su nombre comiencen con A y su salario es mayor que 1000 Consulta: select ename, job, mgr, sal, deptno from emp where (ename like '[a]%' and sal>1000) Respuesta:

40. Hallar el nombre y el salario total de todos los empleados y ordenados por este ultimo y por su propio salario. Consulta: select ename, sal+comm as 'salario total' , sal from emp order by sal+comm, sal Respuesta:

- 17 -

Consultas SQL

41. Obtener los nombres, salarios y comisin de los empleados que perciben un salario situado entre la mitad de la comisin y la propia comisin. Consulta: select ename, sal, comm from emp where sal between comm/2 and comm order by comm Respuesta:

42. El complementario del anterior. Consulta: select ename, sal, comm from emp where sal not between comm/2 and comm order by comm Respuesta:

43. Intentar lograr los nombres y empleos de los empleados tales que su empleo acaba en IVO y su nombre empieza con A. Consulta: select ename, job from emp where ename like '[a]%'and job like '%ivo' Respuesta:

44. Si te ha resultado muy fcil el anterior prueba a intentar con un predicado simple. Supn que el nombre de un empleo tiene al menos cinco caracteres. Consulta: select ename, job from emp where len(job)> 5 and ename like '[a]%'and job like '%ivo' Respuesta:

- 18 -

Elmer Coyla Idme

45. Hallar los nombres de los empleados que tienen como mximo cinco caracteres en su nombre. Consulta: select ename from emp where len(ename)<=5 Respuesta:

46. Suponiendo que el ao prximo la subida del total percibido por ejemplo es del 6% y el siguiente de 7% hallar los nombres y salarios totales actuales y futuros de todos los empleados, indicando para cada uno si tienen o no comisin. Consulta: select ename, comm, sal+comm as 'Salario total', (sal+comm)+(0.06*(sal+comm)) as '6%', (sal+comm)+(0.07*(sal+comm)) as '7%' from emp where comm is not null union select ename, comm,sal, sal+(0.06*sal),sal+(0.07*sal) from emp where comm is null Respuesta:

- 19 -

Consultas SQL

47. Hallar el nombre y la fecha de ingreso de los empleados que no son vendedores. Consulta: select ename, hiredate from emp where job <> 'vendedor' Respuesta:

48. Obtener la informacin disponible de los empleados de numero uno de los siguientes; 7844, 7900, 7521, 7782 y 7369, pero no uno de entre: 7902, 74 99 ni 7878. el inters del ejercicio radico en que el predicado no debe ser muy extenso. Consulta: select ename from emp where empno in (7844,7900,7521,7782,7934,7678,7369) and empno not in (7902,7839,7499,7878) Respuesta:

49. Hallar los salarios totales de todos los empleados. Consulta: select ename, comm+sal as 'Salario Final' from emp where comm is not null union select ename, sal from emp where comm is null

- 20 -

Elmer Coyla Idme

Respuesta:

50. Ordena los empleados por su departamento y luego de manera descendente por su nmero. Consulta: select ename, deptno, empno from emp order by deptno, empno desc Respuesta:

51. Para los empleados que tienen como director a algn otro con nmero mayor que el suyo, obtener los que reciben el salario mas de 1000 y menos de 2000. Consulta: select ename, mgr,empno, sal, deptno from emp where mgr>empno and sal between 1000 and 2000

- 21 -

Consultas SQL

Respuesta:

52. Obtn el salario ms alto de la empresa, el total destinado a comisiones y el nmero de empleados. Consulta: select max(sal) as 'Maximo Salario', sum(comm) as 'Total de comisiones', count(empno) as 'Total de Empleados' from emp Respuesta:

53. Hallar los datos de los empleados cuyo salario es mayor que el del empleado de cdigo 7934 ordenando por su propio salario Consulta: select ename, sal from emp where sal >(select sal from emp where empno=7934) order by sal asc Respuesta:

54. Obtn informacin en la que se refleja en nombre, empleo y salarios tanto de los que superan el salario de Allen como del propio Allen. Consulta: select ename, job,sal from emp where sal >(select sal from emp where ename='allen')

- 22 -

Elmer Coyla Idme

Respuesta:

55. Hallar el nombre del ltimo empleado por orden alfabtico. Consulta: select ename from emp where ename>= all(select ename from emp) Respuesta:

56. Halla el salario ms alto, el ms bajo y la diferencia entre ellos. Consulta: select max(sal)as 'salario maximo', min(sal) as 'salario minimo', (max(sal)min(sal)) as 'diferencia' from emp Respuesta:

57. Sin conocer los resultado del ejercicio anterior, Quines reciben el salario mas alto y mas bajo y a cuanto ascienden?. Consulta: select ename, sal from emp where sal >= all(select sal from emp) union select ename, sal from emp where sal <= all(select sal from emp) Respuesta:

58. Hallar la media de los salarios de los departamentos cuyo salario mnimo supera a 900, considerando los salarios inferiores a 5000. adems se nenecita el cdigo y el nombre de los departamentos. Consulta: select e.deptno, d.dname, avg(sal) as 'Salario promedio' from emp e, dept d where e.deptno=d.deptno and e.deptno not in(select deptno from emp where sal <=900) group by d.dname, e.deptno

- 23 -

Consultas SQL

Respuesta:

59. Qu empleados trabajan en ciudades que tienen mas de cinco letras?. Ordena el resultado inversamente por ciudades y normalmente por nombres de empleados. Consulta: select e.ename, d.loc from emp e, dept d where e.deptno=d.deptno and len(d.loc)>5 order by d.loc desc , e.ename Respuesta:

60. Hallar los empleados cuyo salario supera o coincide con la media del salario de la empresa. Consulta: select ename, sal from emp where sal >= all (select avg(sal) from emp) Respuesta:

- 24 -

Elmer Coyla Idme

61. Obtn los empleados cuyos salarios supera al de sus compaeros de departamento. Consulta: select e.ename, e.sal, e.deptno from emp e where e.sal >= all(select sal from emp where deptno=e.deptno) order by sal Respuesta:

62. Cuntos empleados diferentes, empleados y diferentes salarios encontramos en el departamento 30, y a que cantidad asciende la suma de los salarios de dicho departamento? Consulta: select count(distinct job) as 'Empleos', count(ename) as 'Empleados', count(distinct sal) as 'Salarios', sum(sal) as 'Total de salarios' from emp where deptno=30 Respuesta:

63. Cuntos empleados tienen comisin? Consulta: select count(comm) as 'Cantidad de empleados con comision' from emp Respuesta:

64. Cuntos empleados tienen el departamento 20? Consulta: select count(e.empno) as 'Cant. de Emp del Dept 10' from emp e, dept d where e.deptno=d.deptno and d.deptno=10 Respuesta:

- 25 -

Consultas SQL

65. Halla los departamentos que tienen ms de tres empleados y el nmero de empleados de los mismos. Consulta: select e.deptno, d.dname, count(e.ename)as 'Cant de Empleados' from emp e, dept d where d.deptno=e.deptno and 3<(select count(ename) from emp where deptno=d.deptno) group by dname, e.deptno Respuesta:

66. Halla los empleados que tienen por lo menos un empleado a su mando, ordenando inversamente por nombre. Consulta: select ename from emp where empno in(select mgr from emp) order by ename desc Respuesta:

67. Halla la suma de los salarios de cada departamento. Consulta: select d.dname, sum(e.sal) as 'suma de salarios' from emp e, dept d where e.deptno=d.deptno group by d.dname Respuesta:

- 26 -

Elmer Coyla Idme

68. Obtn todos los departamentos sin empleados. Consulta: select distinct d.deptno,d.dname from emp e, dept d where d.deptno not in(select e.deptno from emp e, dept d where e.deptno=d.deptno) Respuesta:

69. Cuntos empleos hay en cada departamento y cual es la media del salario de cada uno?. Consulta: select count(e.ename), avg(e.sal) from emp e, dept d where e.deptno=d.deptno group by d.deptno Respuesta:

70. Halla los empleados del departamento 30 por orden descendente de comisin. Consulta: select ename, deptno, comm from emp where deptno=30 order by comm desc Respuesta:

71. Obtener los empleados que trabajan en Dallas o en New York. Consulta: select ename from emp where deptno in(select deptno from dept where loc='dallas' or loc='new york')

- 27 -

Consultas SQL

Respuesta:

72. Hllense los empleados con salario mayor de cada departamento. Se debe incluir el salario y el nombre del departamento. Consulta: select e.ename, e.sal, d.dname from emp e, dept d where d.deptno=e.deptno and e.sal>= all(select sal from emp where deptno=e.deptno) Respuesta:

73. Seleccionar los empleos que hay en cada departamento, ordenados por departamento. Consulta: select deptno, job from emp order by 1 Respuesta:

- 28 -

Elmer Coyla Idme

74. Calcular el salario anual a percibir por cada empleado. Consulta: select ename, sal *4*12 as 'Salario Anual' from emp Respuesta:

75. Seleccionar aquellos empleados que hayan entrado antes del 1/1/82. Consulta: select ename, hiredate from emp where hiredate < '1/1/82' Respuesta:

76. Seleccionar los empleados cuyo salario sea superior al de ADAMS. Consulta: select ename from emp where sal >(select sal from emp where ename = 'adams')

- 29 -

Consultas SQL

Respuesta:

77. Seleccionar los empleados que trabajan en el mismo departamento que CLARK. Consulta: select ename from emp where deptno=(select deptno from emp where ename = 'clark') Respuesta:

78. Encontrar a los empleados cuyo jefe es BLAKE. Consulta: select ename from emp where mgr=(select empno from emp where ename='blake') Respuesta:

79. Seleccionar aquellos empleados que tienen comisin. Consulta: select ename from emp where comm is not null

- 30 -

Elmer Coyla Idme

Respuesta:

80. Seleccionar los empleados que trabajan en Chicago. Consulta: select ename from emp where deptno in(select deptno from dept where loc='chicago') Respuesta:

81. Seleccionar los empleados que ganen ms que alguno de los Vendedores. Consulta: select ename from emp where sal > some(select sal from emp where job='vendedor') Respuesta:

82. Seleccionar aquellos empleados que hayan entrado en 1981. Consulta: select ename, hiredate from emp where hiredate between '1/1/1981'and'31/12/1981'

- 31 -

Consultas SQL

Respuesta:

83. Seleccionar aquellos empleados letra una D. Consulta: select ename from emp where ename like '_d%' Respuesta:

cuyo nombre tenga como segunda

84. Seleccionar el salario mnimo, mximo y medio de los empleados agrupados por empleo, pero slo aquellos cuya media sea superior a 4000. Consulta: select job, min(sal), max(sal), avg(sal) from emp group by job having avg(sal)> 4000 Respuesta:

85. El salario medio y mnimo de cada puesto, mostrando en el resultado aquellos cuyo salario medio est por encima de 1500. Consulta: select job, avg(sal), min(sal) from emp group by job having avg(sal)>1500 Respuesta:

- 32 -

Elmer Coyla Idme

86. Cuntos empleados trabajan en Chicago?. Consulta: select count(*) from emp, dept where emp.deptno=dept.deptno and loc='chicago' Respuesta:

87. Qu empleados trabajan en Dallas?. Consulta: select ename from emp, dept where emp.deptno=dept.deptno and loc='dallas' Respuesta:

88. Nombre de todos los empleados, empleo, departamento y localidad. Consulta: select ename, job, emp.deptno, loc from emp, dept where emp.deptno=dept.deptno Respuesta:

89. Seleccionar el nombre de cada empleado, y el nmero y el nombre de su jefe. Consulta: select e1.ename, e1.mgr, e2.ename from emp e1, emp e2 where e2.empno=e1.mgr order by e1.ename

- 33 -

Consultas SQL

Respuesta:

90. Mostrar el nombre del empleado, su trabajo, el nombre y el cdigo del departamento en el que trabaja. Consulta: select ename,job, dname, dept.deptno from emp, dept where emp.deptno=dept.deptno Respuesta:

91. Nombres de los empleados que trabajan en Chicago. Consulta: select ename from emp e where exists(select * from dept d where e.deptno=d.deptno and loc='chicago')

- 34 -

Elmer Coyla Idme

Respuesta:

92. Visualice el nmero de los departamentos que tengan ms de tres empleados asignados. Consulta: select distinct deptno from emp e1 where 3<(select count(*) from emp e2 where e1.deptno=e2.deptno) Respuesta:

93. Listar el nombre de los empleados que ganan menos que sus supervisores. Consulta: select ename from emp e1 where sal<(select sal from emp e2 where e2.empno=e1.mgr) Respuesta:

- 35 -

Consultas SQL

94. Encontrar el ename, dname, job y sal de los empleados que trabajen en el mismo departamento que turner y su salario sea mayor que la media del salario del departamento 10. Consulta: select ename, dname, job, sal from emp, dept where emp.deptno=dept.deptno and emp.deptno=(select deptno from emp where ename='turner') and sal > (select avg(sal) from emp where deptno =30) Respuesta:

95. Listar el nombre, trabajo, departamento, localidad y salario de aquellos empleados que tengan un salario mayor de 2000 y trabajen en Dallas o New York. Consulta: select ename,job,emp.deptno, loc, sal from emp,dept where emp.deptno=dept.deptno and sal>2000 and loc in ('dallas','new york') Respuesta:

96. Mostrar el nombre, cargo y sueldo para todos los empleados excepto los gerentes. Consulta: select ename,job, sal from emp where job!='gerente' Respuesta:

- 36 -

Elmer Coyla Idme

97. Listar el nombre, sueldo mensual, sueldo diario (basado en un mes de 22 das hbiles), y sueldo diario redondeado al dlar entero ms cercano, para Allen y Jones. Consulta: select ename,sal,sal/22, round(sal/22,0) from emp where ename in('allen','jones') Respuesta:

98. Mostrar el salario promedio anual para todos los cargos que tengan ms de dos empleados. Consulta: select job, 12*avg(sal) from emp group by job having count(*) > 2 Respuesta:

99. Mostrar cada departamento, seguido de su nmero de empleados. Consulta: select deptno, count(*) from emp group by deptno Respuesta:

- 37 -

Consultas SQL

100. Mostrar el nmero de empleados para cada cargo en cada departamento. Consulta: select deptno, job, count(*) from emp group by deptno, job Respuesta:

- 38 -

Elmer Coyla Idme

El que no sabe es un imbcil. El que sabe y calla es un criminal. Bertolt Brecht

- 39 -

You might also like