MANUAL 100 Consultas
-
Upload
elmercoyla -
Category
Documents
-
view
835 -
download
2
Transcript of MANUAL 100 Consultas
UNIVERSIDAD NACIONAL DEL ALTIPLANO – PUNO FACULTAD DE INGENIERÍA MECÁNICA ELÉCTRICA, ELECTRÓNICA Y SISTEMAS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
100 CONSULTAS BÁSICAS DE SQL
SENTENCIAS SELECT
Ing. ELMER COYLA IDME
PUNO – PERÚ
2011
Consultas SQL
- 2 -
DEDICATORIA
todos los grandes maestros de la Escuela de Post Grado de la
Universidad Nacional de Educación “Enrique Guzman y Valle” La
Cantuta de la Mención de Docencia Universitaria, a todos los estudiantes
de la Escuela Profesional de Ingeniería de Sistemas de la Universidad Nacional
del Altiplano de Puno de la Asignatura de Tecnologías de Desarrollo de
Aplicaciones Semestre 2007 – I, a los estudiantes el Instituto Superior
Pedagógico Público “Alianza Ichuña - Bélgica” de Moquegua de la Carrera
Profesional de Computación e Informática Promoción 2007 y a los estudiantes del
Instituto Superior Tecnológico Público “Alianza Ichuña - Bélgica” de la Carrera
Profesional de Computación e Informática, Promoción 2002 – 2003 y 2004, por
sus valiosas sugerencias, comprensión y ánimo; sin ustedes no hubiera sido
posible la culminación de este Solucionario.
El Autor.
A
Elmer Coyla Idme
- 3 -
PRESENTACION
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 simultáneamente cada
una de las distintas modalidades del comando SELECT.
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 comprensión a todos los futuros profesionales,
sobre las deficiencias que pudieran existir en la codificación o razones de error en
la digitación, 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
formación profesional. Le rogamos que cualquier crítica, sugerencia, o inquietud,
la dirija a la siguiente dirección [email protected], que gustosos lo
responderé con el ánimo de mejorar en futuras ediciones.
Elmer Coyla Idme
E
Consultas SQL
- 4 -
ESQUEMA SCOTT
CONTENIDO DE LAS TABLAS
Elmer Coyla Idme
- 5 -
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 orden ado por nombre.
Consulta: select empno, ename, job, mgr, sal from emp where job='administrativo' order by ename asc
Consultas SQL
- 6 -
Respuesta :
5. El mismo pero modificado de alguna forma la sentenc ia 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
Elmer Coyla Idme
- 7 -
Respuesta :
8. Hallar el nombre de los departamentos. Pero ordenad o 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 p or 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, ord enados por salario.
Consulta: select ename, job, sal from emp order by sal
Consultas SQL
- 8 -
Respuesta :
12. Idéntico Pero ordenados ahora por empleo y salario.
Consulta: select ename, job, sal from emp order by job, sal Respuesta :
13. Idéntico. Pero ordenado inversamente por empleo y n ormalmente por
salario. Consulta: select ename, job, sal from emp order by job desc, sal asc
Elmer Coyla Idme
- 9 -
Respuesta :
14. Obtener los salarios y las comisiones de los emple ados del
departamento 30. Consulta: select deptno,ename, sal, comm from emp where deptno =30 Respuesta :
15. Idéntico, pero ordenado por comisión.
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
Consultas SQL
- 10 -
Respuesta :
17. Hallar las distintas comisiones y los nombres de lo s 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 números de los departament os posibles de la
empresa, de manera que no se repita. Consulta: select distinct comm, deptno from emp where comm is not null
Elmer Coyla Idme
- 11 -
Respuesta :
20. Obtenga los nuevos salarios que resultarían de suma r a los empleados
30 una nueva gratificación de 1000 unidades monetar ias. Consulta: select deptno, sal +1000 AS 'NUEVO SALARIO' from emp where deptno=30 Respuesta :
21. Idéntico, pero obteniendo también el salario anteri or.
Consulta: select deptno, sal, sal +1000 AS 'NUEVO SALARIO' from emp where deptno=30 Respuesta :
22. Hallar los empleados que tienen una comisión superi or a la mitad de su
salario. Consulta: select ename from emp where comm >(sal/2) Respuesta :
Consultas SQL
- 12 -
23. Hallar los empleados cuya comisión 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’ an teponiéndose a su
respectivo valor. Consulta: select 'Nombre:', ename, 'Puesto:', job from emp Respuesta :
25. Hallar el salario y la comisión de los empleados cu yo número de
empleado supera a 7500. Consulta: select empno,sal, comm from emp where empno>7500
Elmer Coyla Idme
- 13 -
Respuesta :
26. Si dividimos a los empleados en dos grupos A y B, e mpezando los del
grupo B en la letra J, Obtén los nombres y empleos de los del grupo B, por orden alfabético. Consulta: select ename, job from emp where substring(ename,1,1)>'j' order by ename asc Respuesta :
27. Obtener el salario, la comisión y el salario total (salario + comisión) de
los empleados con comisión, 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 :
Consultas SQL
- 14 -
28. Idéntico, pero para los que no tienen comisión. 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 s alario superior a
1000, tienen como director al empleado de código 76 98. 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 comisión sobre e l 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
Elmer Coyla Idme
- 15 -
Respuesta :
32. Hallar los empleados del departamento 10 cuyo nombr e 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 ningún otro.
Consulta: select ename, mgr from emp where mgr is null Respuesta :
34. Obtener los nombres de los departamentos que no sea n “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 ad ministrativos que
no trabajan en el departamento 10 y cuyo salario es superior a 800, ordenados por la fecha de incorporación. Consulta: select ename, deptno, sal , hiredate from emp where job='administrativo' and deptno<>10 and sal > 800 order by hiredate asc
Consultas SQL
- 16 -
Respuesta :
36. Para los empleados que tienen comisión obtener sus nombres en orden
alfabético y el cociente entre salarios y comisión. Consulta: select ename, comm , sal/comm from emp where comm is not null order by ename Respuesta :
37. Obtener información de empleados cuyos nombre cont iene exactamente
5 caracteres. Consulta: select ename from emp where len(ename)=5 Respuesta :
38. Idéntico, pero cuyo nombre contengan al menos cinco caracteres.
Consulta: select ename from emp where len(ename)>=5
Elmer Coyla Idme
- 17 -
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 em pleados 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 :
Consultas SQL
- 18 -
41. Obtener los nombres, salarios y comisión de los emp leados que perciben un salario situado entre la mitad de la co misión y la propia comisión. 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 emplea dos 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 fácil el anterior prueba a i ntentar con un
predicado simple. Supón 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 :
Elmer Coyla Idme
- 19 -
45. Hallar los nombres de los empleados que tienen como máximo cinco caracteres en su nombre. Consulta: select ename from emp where len(ename)<=5 Respuesta :
46. Suponiendo que el año próximo la subida del total p ercibido por ejemplo
es del 6% y el siguiente de 7% hallar los nombres y salarios totales actuales y futuros de todos los empleados, indicand o para cada uno si tienen o no comisión. 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 :
Consultas SQL
- 20 -
47. Hallar el nombre y la fecha de ingreso de los emple ados que no son vendedores. Consulta: select ename, hiredate from emp where job <> 'vendedor' Respuesta :
48. Obtener la información 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 interés del ejercicio radico en q ue 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
Elmer Coyla Idme
- 21 -
Respuesta :
50. Ordena los empleados por su departamento y luego de manera
descendente por su número. Consulta: select ename, deptno, empno from emp order by deptno, empno desc Respuesta :
51. Para los empleados que tienen como director a algún otro con número
mayor que el suyo, obtener los que reciben el salar io 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
Consultas SQL
- 22 -
Respuesta :
52. Obtén el salario más alto de la empresa, el total destinado a comisiones
y el número 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 m ayor que el del
empleado de código 7934 ordenando por su propio sal ario Consulta: select ename, sal from emp where sal >(select sal from emp where empno=7934) order by sal asc Respuesta :
54. Obtén información en la que se refleja en nombre, empleo y salarios
tanto de los que superan el salario de Allen como d el propio Allen. Consulta: select ename, job,sal from emp where sal >(select sal from emp where ename='allen')
Elmer Coyla Idme
- 23 -
Respuesta :
55. Hallar el nombre del último empleado por orden alfa bético.
Consulta: select ename from emp where ename>= all(select ename from emp) Respuesta :
56. Halla el salario más alto, el más 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, ¿ Quiénes 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 departamento s cuyo salario mínimo
supera a 900, considerando los salarios inferiores a 5000. además se nenecita el código 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
Consultas SQL
- 24 -
Respuesta :
59. ¿Qué empleados trabajan en ciudades que tienen mas de cinco letras?.
Ordena el resultado inversamente por ciudades y nor malmente 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 :
Elmer Coyla Idme
- 25 -
61. Obtén los empleados cuyos salarios supera al de sus compañeros 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. ¿Cuántos empleados diferentes, empleados y diferent es 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. ¿Cuántos empleados tienen comisión?
Consulta: select count(comm) as 'Cantidad de empleados con comision' from emp Respuesta :
64. ¿Cuántos 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 :
Consultas SQL
- 26 -
65. Halla los departamentos que tienen más de tres empl eados y el número 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 empl eado 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 :
Elmer Coyla Idme
- 27 -
68. Obtén 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. ¿Cuántos 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 d escendente de
comisión. 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')
Consultas SQL
- 28 -
Respuesta :
72. Hállense los empleados con salario mayor de cada de partamento. Se
debe incluir el salario y el nombre del departament o. 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 departament o, ordenados por
departamento. Consulta: select deptno, job from emp order by 1 Respuesta :
Elmer Coyla Idme
- 29 -
74. Calcular el salario anual a percibir por cada emple ado.
Consulta: select ename, sal *4*12 as 'Salario Anual' from emp Respuesta :
75. Seleccionar aquellos empleados que hayan entrado an tes 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')
Consultas SQL
- 30 -
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 comisión.
Consulta: select ename from emp where comm is not null
Elmer Coyla Idme
- 31 -
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 más 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'
Consultas SQL
- 32 -
Respuesta :
83. Seleccionar aquellos empleados cuyo nombre tenga c omo segunda
letra una ‘D’. Consulta: select ename from emp where ename like '_d%' Respuesta :
84. Seleccionar el salario mínimo, máximo y medio de lo s empleados
agrupados por empleo, pero sólo 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 mínimo 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 :
Elmer Coyla Idme
- 33 -
86. ¿Cuántos 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 número 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
Consultas SQL
- 34 -
Respuesta :
90. Mostrar el nombre del empleado, su trabajo, el nomb re y el código 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')
Elmer Coyla Idme
- 35 -
Respuesta :
92. Visualice el número de los departamentos que tengan más 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 q ue sus
supervisores. Consulta: select ename from emp e1 where sal<(select sal from emp e2 where e2.empno=e1.mgr) Respuesta :
Consultas SQL
- 36 -
94. Encontrar el ename, dname, job y sal de los emplead os 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 tra bajen 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 em pleados excepto los
gerentes. Consulta: select ename,job, sal from emp where job!='gerente' Respuesta :
Elmer Coyla Idme
- 37 -
97. Listar el nombre, sueldo mensual, sueldo diario (ba sado en un mes de 22 días hábiles), y sueldo diario redondeado al dólar entero más 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 ca rgos que tengan más
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 número de empleados.
Consulta: select deptno, count(*) from emp group by deptno Respuesta :
Consultas SQL
- 38 -
100. Mostrar el número de empleados para cada cargo en c ada departamento. Consulta: select deptno, job, count(*) from emp group by deptno, job Respuesta :
Elmer Coyla Idme
- 39 -
“El que no sabe
es un imbécil.
El que sabe y
calla
es un criminal…”.
Bertolt Brecht