Advertisement
CPV

Untitled

CPV
Jun 28th, 2022
1,569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 8.38 KB | None | 0 0
  1. 1.- Construir una consulta que muestra las cantidades de personas por sexo
  2. que hay en la tabla persona. Muestra las columnas sexo y cantidad.
  3.  
  4.  
  5. SELECT COUNT(persexo) cantidad, persexo  FROM persona GROUP BY persexo;
  6.  
  7. =============================================================
  8. 1a.- Agregar a las columnas los alias SEXO y CANTIDAD.
  9.  
  10. SELECT COUNT(persexo) cantidad, persexo sexo FROM persona GROUP BY persexo;
  11.  
  12. =============================================================
  13. 1b.- Modificar la consulta para que muestre ‘Hombre’ o ‘Mujer’ como
  14. contenido de la columna persexo
  15.  
  16. SELECT COUNT(persexo) cantidad,
  17. CASE persexo WHEN 'M' THEN 'Hombre'
  18.     ELSE CASE persexo WHEN 'F' THEN 'Mujer' END
  19. END  sexo FROM persona GROUP BY persexo;
  20.  
  21. =============================================================
  22. 2.-
  23. Construir un comando que muestre cuál es la fecha de nacimiento más
  24. antigua de las personas, en cada país de nacimiento. Mostrar las columnas
  25. pernacion y fecha.
  26.  
  27. SELECT MIN(perfecnac) fecha, pernacion FROM persona GROUP BY pernacion;
  28. =============================================================
  29. 2a.- Modificar la consulta para que muestre el nombre del país en vez del
  30. código de país, para lo cual debe usar un join.
  31.  
  32. SELECT MIN(perfecnac) fecha, pais.paisnombre FROM persona
  33. join pais ON pais.paiscodigo = persona.pernacion
  34. GROUP BY paisnombre;
  35. =============================================================
  36. 2b.- Ordenar los resultados por nombre de país en forma descendente.
  37.  
  38. SELECT MIN(perfecnac) fecha, pais.paisnombre FROM persona
  39. join pais ON pais.paiscodigo = persona.pernacion
  40. GROUP BY paisnombre ORDER BY paisnombre DESC ;
  41. =============================================================
  42. 2c.- Dar un formato a la fecha de forma que se vea similar a la siguiente:
  43. 'Sun 14 de July de 1946'.
  44.  
  45. SELECT date_format(MIN(perfecnac),'%a %d de %M de %Y') fecha , pais.paisnombre FROM persona
  46. join pais ON pais.paiscodigo = persona.pernacion
  47. GROUP BY pernacion ORDER BY paisnombre DESC;
  48. =============================================================
  49. 3.-
  50. Construir una consulta que muestra cuál es el promedio de importe por
  51. cada préstamo. Mostrar las columnas número de préstamo y promedio.
  52.  
  53. SELECT AVG(ifnull(presimporte,0)) promedio, prestamo_detalle.presnumero "Número de préstamo"
  54. FROM prestamo_detalle
  55. GROUP BY prestamo_detalle.presnumero;
  56.  
  57. =============================================================
  58. 3a.- Modificar la columna del promedio de modo que esté redondeada a 1
  59. DECIMAL.
  60.  
  61. SELECT format(AVG(ifnull(presimporte,0)),1 )  promedio, prestamo_detalle.presnumero "Número de préstamo"
  62. FROM prestamo_detalle
  63. GROUP BY prestamo_detalle.presnumero;
  64. =============================================================
  65. 3b.- Modificar la columna del promedio de forma que muestre siempre dos
  66. decimales y signo monetario.
  67.  
  68. SELECT CONCAT("s/",format(AVG(ifnull(presimporte,0)),2))   promedio, prestamo_detalle.presnumero "Número de préstamo"
  69. FROM prestamo_detalle
  70. GROUP BY prestamo_detalle.presnumero;
  71. =============================================================
  72. 3c.- Modificar la consulta de forma que muestre una sola columna con el alias
  73. PRÉSTAMOS y la siguiente apariencia:
  74. ‘El préstamo 501 tiene un promedio de S/ 4.50.
  75.  
  76. SELECT CONCAT("El préstamo ", presnumero," tiene un promedio de " ," s/",format(AVG(ifnull(presimporte,0)),2)) PRÉSTAMOS
  77. FROM prestamo_detalle
  78. GROUP BY prestamo_detalle.presnumero;
  79. =============================================================
  80.  
  81. 4Construir una consulta que muestra cuantos ejemplares hay de cada género
  82. dentro de cada idioma de edición. Mostrar las columnas código de género,
  83. código de idioma y cantidad.
  84.  
  85. SELECT ejemplar.ejemidioma,pelgenero, COUNT(*) cantidad  FROM ejemplar, pelicula
  86. WHERE ejemplar.pelcodigo = pelicula.pelcodigo
  87. GROUP BY ejemplar.ejemidioma, pelicula.pelgenero;
  88. =============================================================
  89. Modificar la consulta de forma que se muestre el nombre del género en vez
  90. del código de genero, con el alias GENERO. Debe emplear un join
  91.  
  92. SELECT ejemplar.ejemidioma, genero.gennombre GENERO, COUNT(*) cantidad  
  93. FROM ejemplar, pelicula, genero
  94. WHERE ejemplar.pelcodigo = pelicula.pelcodigo AND pelicula.pelgenero = genero.gencodigo
  95. GROUP BY ejemplar.ejemidioma, pelicula.pelgenero;
  96. =============================================================
  97.  
  98.  
  99.  
  100. Modificar la consulta de forma que se vea también el nombre del idioma en
  101. vez del código de idioma, con el alias IDIOMA. Debe ampliar el join
  102.  
  103.  
  104. SELECT idioma.idionombre IDIOMA, genero.gennombre GENERO, COUNT(*) cantidad  
  105. FROM ejemplar, pelicula, genero, idioma
  106. WHERE ejemplar.pelcodigo = pelicula.pelcodigo AND pelicula.pelgenero = genero.gencodigo AND ejemplar.ejemidioma = idioma.idiocodigo
  107. GROUP BY ejemplar.ejemidioma, pelicula.pelgenero;
  108.  
  109. =============================================================
  110. cambiar la consulta de agrupamiento USANDO los
  111. alias Y ORDENAR DE FORMA DESCENTENDE POR IDIOMA
  112.  
  113. SELECT i.idionombre IDIOMA, g.gennombre GENERO, COUNT(*) cantidad  
  114. FROM ejemplar e, pelicula p, genero g, idioma i
  115. WHERE e.pelcodigo = p.pelcodigo AND p.pelgenero = g.gencodigo AND e.ejemidioma = i.idiocodigo
  116. GROUP BY IDIOMA, GENERO ORDER BY  IDIOMA DESC;
  117.  
  118.  
  119. =============================================================
  120. Modificar la consulta para que muestre la siguiente apariencia:
  121. ‘Hay 5 películas del genero Acción en Ingles’.
  122.  
  123. SELECT CONCAT( "hay ", COUNT(*)  , " películas del género ", g.gennombre," en ", i.idionombre)   resultado
  124. FROM ejemplar e, pelicula p, genero g, idioma i
  125. WHERE e.pelcodigo = p.pelcodigo AND p.pelgenero = g.gencodigo AND e.ejemidioma = i.idiocodigo
  126. GROUP BY e.ejemidioma, p.pelgenero;
  127. =============================================================
  128. Agregar lo necesario para que si la cantidad es uno diga ‘película’ y no
  129. ‘películas’.
  130.  
  131. SELECT CONCAT( "hay ",  COUNT(*),
  132. CASE  
  133. WHEN COUNT(*)>1 THEN ' peliculas '
  134. ELSE ' pelicula'  END  
  135. , "  del género ", g.gennombre," en ", i.idionombre)   resultado
  136. FROM ejemplar e, pelicula p, genero g, idioma i
  137. WHERE e.pelcodigo = p.pelcodigo AND p.pelgenero = g.gencodigo AND e.ejemidioma = i.idiocodigo
  138. GROUP BY e.ejemidioma, p.pelgenero ;
  139.  
  140. =============================================================
  141. Modificar la consulta. Debe emplear  join
  142.  
  143. SELECT CONCAT( "hay ",  COUNT(*),
  144. CASE  
  145. WHEN COUNT(*)>1 THEN ' peliculas '
  146. ELSE ' pelicula'  END  
  147. , "  del género ", g.gennombre," en ", i.idionombre)   resultado
  148.  
  149. FROM ejemplar e
  150. join pelicula p ON e.pelcodigo = p.pelcodigo
  151. join genero g ON p.pelgenero = g.gencodigo
  152. join idioma i ON e.ejemidioma = i.idiocodigo
  153. GROUP BY e.ejemidioma, p.pelgenero ;
  154.  
  155.  
  156. =============================================================
  157. 5.-
  158. Construir una consulta que muestra a los préstamos que se han realizado
  159. con 2 o más películas.
  160.  
  161.  
  162. SELECT COUNT(presnumero), presnumero  
  163. FROM prestamo_detalle
  164. GROUP BY presnumero
  165. HAVING COUNT(presnumero) > 2;
  166.  
  167.  
  168. =============================================================
  169. 5a.- mostrar los préstamos que han tenido
  170. más de una película del genero 1.
  171.  
  172.  
  173. SELECT COUNT(pd.presnumero), pd.presnumero, p.pelgenero FROM prestamo_detalle pd, pelicula p WHERE p.pelcodigo=pd.pelcodigo AND p.pelgenero=1 GROUP BY presnumero HAVING COUNT(presnumero)>1;
  174.  
  175.  
  176.  
  177. SELECT COUNT(pd.presnumero), pd.presnumero , p.pelgenero
  178. FROM prestamo_detalle pd , ejemplar e, pelicula p
  179. WHERE pd.pelcodigo = e.pelcodigo AND e.ejemnumero = pd.ejemnumero AND p.pelcodigo = e.pelcodigo
  180. AND p.pelgenero =1
  181. GROUP BY pd.presnumero, p.pelgenero
  182. HAVING COUNT(pd.presnumero) >1;
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189. =============================================================
  190. 6.-
  191. Construir una consulta que muestra cuál es la cantidad de ejemplares por
  192. idioma más alta.
  193.  
  194. SELECT MAX(cantidad) FROM (
  195. SELECT COUNT(*) cantidad ,ejemplar.ejemidioma idioma FROM ejemplar GROUP BY ejemplar.ejemidioma
  196. ) AS tabla;
  197.  
  198.  
  199. =============================================================
  200. 6a.- Modificar la consulta para que muestre cual es la cantidad más baja.
  201.  
  202.  
  203. SELECT MIN(cantidad) FROM (
  204. SELECT COUNT(*) cantidad ,ejemplar.ejemidioma idioma FROM ejemplar GROUP BY ejemplar.ejemidioma
  205. ) AS tabla;
  206.  
  207. SELECT COUNT(*) cantidad ,idioma.idionombre
  208. FROM ejemplar, idioma WHERE ejemplar.ejemidioma = idioma.idiocodigo
  209. GROUP BY ejemplar.ejemidioma
  210.  
  211. =============================================================
  212.  
  213.  
  214.  
  215.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement