tsunamigue

EJERCICIOS SQL

Feb 12th, 2014
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.75 KB | None | 0 0
  1. -- Consulta APELLIDO de la tabla empleado cuyo nº de departamento sea 30 o 10.
  2.  
  3. SELECT DEPT_NO, APELLIDO
  4. FROM Empleado
  5. WHERE DEPT_NO = 10 OR DEPT_NO = 30
  6.  
  7.  
  8. -- Consulta Apellido de la tabla empleado cuyo nº de dptno no sea ni 30 ni 10
  9.  
  10. SELECT DEPT_NO, APELLIDO
  11. FROM Empleado
  12. WHERE NOT(DEPT_NO = 10 OR DEPT_NO = 30)
  13.  
  14.  
  15. -- Consulta de la tabla empleado los apellidos cuyo oficio sea vendedor, analista o empleado
  16.  
  17. SELECT OFICIO, APELLIDO
  18. FROM Empleado
  19. WHERE OFICIO IN ('Vendedor' , 'Analista','Empleado')
  20.  
  21. -- Ni vendedor, analista o empleado
  22.  
  23. SELECT OFICIO, APELLIDO
  24. FROM Empleado
  25. WHERE OFICIO NOT IN ('Vendedor' , 'Analista','Empleado')
  26.  
  27. -- Apellidos y salario de los empleados cuyo salario este comprendido entre 1500 y 2000
  28.  
  29. SELECT APELLIDO, SALARIO
  30. FROM Empleado
  31. WHERE SALARIO BETWEEN 1500 AND 2000;
  32.  
  33. -- Que no este comprendido entre 1500 y 2000.
  34.  
  35.  
  36. SELECT APELLIDO, SALARIO
  37. FROM Empleado
  38. WHERE SALARIO NOT BETWEEN 1500 AND 2000;
  39.  
  40. -- Apellido, Salario y nº dept de empleados cuyo salario sea >2000 en los departamentos 10 o 20.
  41.  
  42.  
  43. SELECT APELLIDO, SALARIO, DEPT_NO
  44. FROM Empleado
  45. WHERE SALARIO > 2000 AND (DEPT_NO= 10 OR DEPT_NO=20)
  46.  
  47.  
  48.  
  49. -- Apellido de los empleados con el mismo oficio que Gil
  50.  
  51. SELECT APELLIDO
  52. FROM Empleado
  53. WHERE OFICIO = (SELECT OFICIO FROM Empleado WHERE APELLIDO = 'Gil')
  54.  
  55. -- Obtener Apellidos de empleados cuyo oficio sea alguno de los oficios que hay en el departamento 20.
  56.  
  57.  
  58. SELECT APELLIDO
  59. FROM Empleado
  60. WHERE OFICIO IN
  61. (SELECT OFICIO FROM Empleado WHERE DEPT_NO = 20)
  62.  
  63. -- Listar departamentos que tengan empleados
  64.  
  65. SELECT DISTINCT DEPT_NO
  66. FROM Empleado
  67.  
  68.     -- USANDO EXIST
  69.  
  70. SELECT DEPT_NO
  71. FROM Departamento
  72. WHERE EXISTS (SELECT * FROM Empleado WHERE Empleado.DEPT_NO=Departamento.DEPT_NO)
  73.  
  74.     -- CONTANDO LOS EMPLEADOS DE CADA DEPARTAMENTO
  75.  
  76. SELECT DEPT_NO, COUNT(*) AS N_EMPLEADOS
  77. FROM Empleado
  78. GROUP BY DEPT_NO
  79.  
  80.  
  81.  
  82.  
  83.  
  84. -- Obtener los datos de los empleados cuyo salario sea igual a algún salario de los empleados del departamento 30
  85.  
  86.  
  87. SELECT *
  88. FROM Empleado
  89. WHERE SALARIO IN (SELECT SALARIO FROM Empleado WHERE DEPT_NO=30)
  90.  
  91. -- Obtener los datos de los empleados cuyo salario sea menor a cualquier salario de los empleados del departamento 30.
  92.  
  93.  
  94.  
  95. SELECT *
  96. FROM Empleado
  97. WHERE SALARIO < (SELECT MIN(SALARIO) FROM Empleado WHERE DEPT_NO=30)
  98.  
  99.  
  100. -- Usando la tabla empleados y departamento :
  101.  
  102.     Datos de empleados que trabajen en Madrid o Barcelona.
  103.     la localidad de los departamentos se obtiene de la tabla DEPART.
  104.     hay que relacionar la tabla emple y depart por el numero de departamento
  105.  
  106. SELECT *
  107. FROM Empleado
  108. WHERE DEPT_NO IN
  109. (SELECT DEPT_NO FROM Departamento WHERE LOCALIDAD = 'Madrid' OR LOCALIDAD='Barcelona')
  110.  
  111. -- Consultar apellidos y oficios de todos los empleados del departamento 20 cuyo trabajo sea idéntico al de cualquiera de los empleados del departamento ventas.
  112.  
  113. SELECT APELLIDO, OFICIO
  114. FROM Empleado
  115. WHERE DEPT_NO = 20 AND OFICIO IN (SELECT OFICIO FROM Empleado WHERE DEPT_NO= (SELECT DEPT_NO
  116. FROM Departamento WHERE TIPO='Ventas'))
  117.  
  118. -- Apellidos de los empleados con el mismo oficio y salario que Gil.
  119.  
  120. SELECT APELLIDO
  121. FROM Empleado
  122. WHERE OFICIO = (SELECT OFICIO FROM Empleado WHERE APELLIDO = 'Gil')
  123. AND SALARIO = (SELECT SALARIO FROM Empleado WHERE APELLIDO = 'Gil')
  124.  
  125. -- Apellidos oficio y salario de los empleados del departamento de Fernandez que tengan su mismo salario
  126.  
  127. SELECT OFICIO, SALARIO
  128. FROM Empleado
  129. WHERE DEPT_NO = (SELECT DEPT_NO FROM Empleado WHERE APELLIDO = 'Fernandez')
  130.  
  131.  
  132.  
  133. -- Nombre de los alumnos que tengan una nota entre 7 y 8 en la asignatura fol.
  134.  
  135. SELECT * FROM ALUMNOS WHERE DNI =
  136. (SELECT DNI FROM NOTAS WHERE COD =
  137. (SELECT COD FROM ASIGNATURAS WHERE NOMBRE ='FOL') AND (NOTA=8 OR NOTA=7))
  138.  
  139. -- Nombre de las asignaturas que no tengan suspensos.
  140.  
  141. SELECT NOMBRE FROM ASIGNATURAS WHERE COD NOT IN (
  142. SELECT COD FROM NOTAS WHERE NOTA < (SELECT MIN(NOTA) FROM NOTAS WHERE NOTA >4))
  143.  
  144. -- Datos de los empleados cuyo director sea  "cerezo".
  145.  
  146. SELECT *
  147. FROM departments
  148. WHERE EXISTS (SELECT * FROM dept_emp WHERE dept_emp.dept_no=departments.dept_no)
  149.  
  150. -- Datos de los departamentos que tengan empleados.
  151.  
  152. SELECT *
  153. FROM departments
  154. WHERE EXISTS (SELECT * FROM departments, dept_emp WHERE departments.dept_no=dept_emp.dept_no)
  155.  
  156. -- Apellidos y salarios de los empleados que superen todos los salarios de los empleados del departamento 20.
  157.  
  158. --BD cutre
  159. SELECT APELLIDO, SALARIO
  160. FROM Empleado
  161. WHERE SALARIO>(SELECT MAX(SALARIO) FROM Empleado WHERE DEPT_NO=20)
  162.  
  163.  
  164.  
  165. -- BD employees
  166. SELECT last_name, first_name
  167. FROM employees
  168. WHERE emp_no IN (
  169.  
  170. SELECT emp_no FROM salaries WHERE salary >(
  171.  
  172. SELECT MAX(salary)
  173.         FROM salaries
  174.         WHERE emp_no  IN (
  175.  
  176.             SELECT emp_no
  177.             FROM dept_emp
  178.             WHERE dept_no='d009')))
  179. -- Datos de las asignaturas que no tengan alumnos.
  180.  
  181. SELECT DISTINCT COD
  182. FROM ASIGNATURAS A
  183. WHERE NOT EXISTS
  184. (SELECT * FROM NOTAS N WHERE A.COD=N.COD)
  185.  
  186. -- Nombre y apellidos de los alumnos que tengan notas en la asignatura con código 1.
  187.  
  188. SELECT APENOM
  189. FROM ALUMNOS
  190. WHERE DNI IN(SELECT DNI FROM NOTAS WHERE COD=1)
  191.  
  192. -- Nombres y apellidos que no tengan notas en la asignatura con codigo 1.
  193. SELECT APENOM
  194. FROM ALUMNOS
  195. WHERE DNI NOT IN(SELECT DNI FROM NOTAS WHERE COD=1)
  196. -- Obtener la suma del salario, el salario maximo y el salario minimo de cada departamento
  197. --BD employees
  198. SELECT dept_no, SUM(salary) Salario_Total, MAX(salary) Salario_Máximo, MIN(salary) Salario_Mínimo
  199. FROM departments, salaries
  200. GROUP BY dept_no
  201. ORDER BY Salario_Total DESC
  202.  
  203.  
  204. -- BD CUTRE
  205. SELECT DEPT_NO, SUM(SALARIO) Salario_Total, MAX(SALARIO) Salario_Máximo, MIN(SALARIO) Salario_Mínimo
  206. FROM Empleado
  207. WHERE DEPT_NO IS NOT NULL
  208. GROUP BY DEPT_NO
  209. ORDER BY Salario_Total DESC
  210.  
  211. -- Calcula el numero de empleados que realizan cada oficio, en cada departamento, se visualizara departamento, oficio y numero de empleado.
  212.  
  213. -- BD CUTRE
  214. SELECT DEPT_NO, OFICIO, COUNT(*) Empleados
  215. FROM Empleado
  216. WHERE DEPT_NO IS NOT NULL AND OFICIO IS NOT NULL
  217. GROUP BY OFICIO
  218.  
  219.  
  220. -- BD employees
  221. SELECT D.dept_no, title, COUNT(*) Empleados
  222. FROM employees E , titles T, dept_emp DE, departments D
  223. WHERE DE.emp_no=E.emp_no AND D.dept_no=DE.dept_no AND E.emp_no=T.emp_no
  224. GROUP BY title, D.dept_no
  225.  
  226. -- Obtener los departamentos que tengan mas de cuatro personas trabajando.
  227.  
  228. --BD employees
  229. SELECT D.dept_no, COUNT(emp_no)
  230. FROM departments D, dept_emp DE
  231. WHERE D.dept_no=DE.dept_no
  232. GROUP BY dept_no
  233.  
  234.  
  235.  
  236. --BD CUTRE
  237. SELECT DEPT_NO
  238. FROM Empleado
  239. GROUP BY DEPT_NO
  240. HAVING COUNT(*)>4
  241.  
  242. -- Visualiza por cada oficio de los empleados del departamento ventas, la suma de los salarios.
  243. --BD EMPLOYEES (CAGATE LORITO)
  244.  
  245. SELECT title, SUM(salary)
  246. FROM titles, salaries
  247. WHERE titles.emp_no IN (
  248.  
  249. SELECT emp_no
  250. FROM dept_emp
  251. WHERE dept_no =(
  252.  
  253. SELECT dept_no
  254. FROM departments
  255. WHERE dept_name='Sales'))AND salaries.emp_no IN (
  256.  
  257. SELECT emp_no
  258. FROM dept_emp
  259. WHERE dept_no =(
  260.  
  261. SELECT dept_no
  262. FROM departments
  263. WHERE dept_name='Sales')) AND salaries.emp_no=titles.emp_no
  264.  
  265. GROUP BY title
  266.  
  267.  
  268. -- BD CUTRE
  269. SELECT OFICIO, SUM(SALARIO) Salario_Total
  270. FROM Empleado
  271. WHERE DEPT_NO IN(
  272.  
  273. SELECT DEPT_NO
  274. FROM Departamento
  275. WHERE TIPO='Ventas')
  276. GROUP BY OFICIO
  277. -- Apellidos de la tabla EMPLE cuyo salario sea igual a la media del salario en su dpto.
  278. --BD CUTRE
  279. SELECT APELLIDO
  280. FROM Empleado E
  281. WHERE SALARIO IN (
  282.  
  283. SELECT AVG(SALARIO)
  284. FROM Empleado
  285. WHERE E.DEPT_NO=Empleado.DEPT_NO
  286. )
  287.  
  288.  
  289. -- Visualiza el nº de empleados de cada de dpto. cuyo oficio sea empleado.
  290. --BD CUTRE
  291. SELECT DEPT_NO, COUNT(*)
  292. FROM Empleado
  293. WHERE OFICIO='empleado'
  294. GROUP BY DEPT_NO
  295.  
  296. -- Visualiza el dpto. que tenga más empleados cuyo oficio sea empleado.
  297. -- BD CUTRE
  298. SELECT Departamento
  299. FROM(
  300.  
  301. SELECT Departamento, MAX(Cont)
  302. FROM (
  303.  
  304. SELECT COUNT(*) Cont, DEPT_NO Departamento
  305. FROM Empleado
  306. WHERE OFICIO='empleado'
  307. GROUP BY DEPT_NO) A) B
  308. -- Visualiza el nº del departamento y nombre que tenga más empleados cuyo oficio sea empleado.
  309.  
  310. -- Departamentos que tienen más de dos personas trabajando en la misma profesión
  311.  
  312. -- Obtén el banco con más sucursales
  313.  
  314. -- Saldo actual de los bancos de Gudalajara, debe mostrar nombre del banco, saldo debe, saldo haber.
  315.  
  316. -- Datos de la cuenta o cuentas con más movimientos, para mostrar nombre de la cuenta y número de movimientos.
  317.  
  318. -- Nombre de la sucursal que haya tenido más suma de reintegros. Para mostrar, nombre de la sucursal y suma de reintegros.
  319.  
  320. --              ---------------INSERTS---------------
  321.  
  322. -- Insertar un alumno con apellido Martín Gonzalez de nombre Isabel y asignatura Informática.
  323.  
  324. INSERT INTO Alumno
  325. VALUES('Isabel', 'Martín Gonzalez',101,NULL,'Informática')
  326.  
  327.  
  328. -- En alumno, insertar, nombre y apellidos, de los empleados del departamento x.
  329. INSERT INTO Alumno (Apellido, id)
  330. SELECT APELLIDO, EMP_NO
  331. FROM Empleado
  332. WHERE DEPT_NO=60
Advertisement
Add Comment
Please, Sign In to add comment