Advertisement
any15015

Act2.2_Labo3

Sep 8th, 2024
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 9.00 KB | None | 0 0
  1. --1 Por cada usuario listar el nombre, apellido y el nombre del tipo de usuario.
  2. SELECT U.Nombre, U.Apellido, T.TipoUsuario FROM Usuarios U, TiposUsuario T WHERE U.IDTipoUsuario=T.IDTipoUsuario
  3. --usando JOIN:
  4. SELECT U.Nombre, U.Apellido, T.TipoUsuario FROM Usuarios U INNER JOIN TiposUsuario T ON U.IDTipoUsuario=T.IDTipoUsuario
  5.  
  6. --2 Listar el ID, nombre, apellido y tipo de usuario de aquellos usuario que sean
  7. --del tipo 'Suscripción Free' o 'Suscripción Básica'
  8. --opc A
  9. SELECT U.IDUsuario, U.Nombre, U.Apellido, T.TipoUsuario FROM Usuarios U INNER JOIN TiposUsuario T ON U.IDTipoUsuario=T.IDTipoUsuario WHERE U.IDTipoUsuario<=2
  10. --opc B
  11. SELECT U.IDUsuario, U.Nombre, U.Apellido, T.TipoUsuario FROM Usuarios U INNER JOIN TiposUsuario T ON U.IDTipoUsuario=T.IDTipoUsuario WHERE T.TipoUsuario='Suscripción Free' OR T.TipoUsuario='Suscripción Básica'
  12.  
  13. --3 Listar los nombres de archivos, extensión, tamaño expresado en Megabytes y el nombre del tipo de archivo.
  14. --NOTA: En la tabla Archivos el tamaño está expresado en Bytes.
  15. --opc A
  16. SELECT A.Nombre, A.Extension, A.Tamaño/1048576 AS TamañoMegabytes, T.TipoArchivo FROM Archivos A INNER JOIN TiposArchivos T ON A.IDTipoArchivo=T.IDTipoArchivo
  17. --opc B
  18. SELECT A.Nombre, A.Extension, CAST(A.Tamaño/1048576.0 AS DECIMAL(10, 2)) AS TamañoMegabytes, T.TipoArchivo FROM Archivos A INNER JOIN TiposArchivos T ON A.IDTipoArchivo=T.IDTipoArchivo
  19.  
  20. --4 Listar los nombres de archivos junto a la extensión con el siguiente formato
  21. --'NombreArchivo.extension'. Por ejemplo, 'Actividad.pdf'.
  22. --Sólo listar aquellos cuyo tipo de archivo contenga los términos 'ZIP', 'Word', 'Excel', 'Javascript' o 'GIF'
  23. SELECT Nombre+'.'+Extension FROM Archivos
  24. WHERE Extension LIKE'%ZIP%' OR Extension LIKE'%Word%' OR Extension LIKE'%Excel%'
  25. OR Extension LIKE'%Javascript%' OR Extension LIKE'%GIF%'
  26.  
  27. --5 Listar los nombres de archivos, su extensión, el tamaño en megabytes y la
  28. --fecha de creación de aquellos archivos que le pertenezca al usuario dueño
  29. --con nombre 'Michael' y apellido 'Williams'.
  30. SELECT A.Nombre, A.Extension, CAST(A.Tamaño/1048576.0 AS DECIMAL(10, 2)) AS TamañoMegabytes, A.FechaCreacion
  31. FROM Archivos A INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario WHERE U.Nombre='Michael' AND U.Apellido='Williams'
  32.  
  33. --6 Listar los datos completos del archivo más pesado del usuario dueño con nombre 'Michael' y apellido 'Williams'.
  34. --Si hay varios archivos que cumplen esa condición, listarlos a todos.
  35. SELECT top 1 WITH ties A.*
  36. FROM Archivos A INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  37. WHERE U.Nombre='Michael' AND U.Apellido='Williams'
  38. ORDER BY Tamaño DESC
  39.  
  40. --7 Listar nombres de archivos, extensión, tamaño en bytes, fecha de creación y
  41. --de modificación, apellido y nombre del usuario dueño de aquellos archivos
  42. --cuya descripción contengan el término 'empresa' o 'presupuesto'
  43. SELECT A.Nombre, A.Extension, A.Tamaño,
  44. CONVERT(VARCHAR(20), A.FechaCreacion, 103) AS FechaCreacion,
  45. CONVERT(VARCHAR(20), A.FechaUltimaModificacion, 103) AS FechaUltimaModificacion,
  46. U.Apellido, U.Nombre
  47. FROM Archivos A INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  48. WHERE A.Descripcion LIKE'%empresa%' OR A.Descripcion LIKE'%presupuesto%'
  49.  
  50. --8 Listar las extensiones sin repetir de aquellos usuarios dueños que tengan tipo
  51. --de usuario 'Suscripción Plus', 'Suscripción Premium' o 'Suscripción Empresarial'
  52. SELECT DISTINCT A.Extension
  53. FROM Archivos A INNER JOIN TiposUsuario T ON a.IDUsuarioDueño=T.IDTipoUsuario
  54. WHERE T.IDTipoUsuario>=3
  55.  
  56. --9 Listar los apellidos y nombres de los usuarios dueños y el tamaño del archivo
  57. --de los tres archivos con extensión 'zip' más pesados. Puede ocurrir que el
  58. --mismo usuario aparezca varias veces en el listado.
  59. SELECT top 3 A.Tamaño, U.Apellido, U.Nombre
  60. FROM Archivos A INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  61. WHERE A.Extension='zip' ORDER BY A.Tamaño DESC
  62.  
  63. --10 Por cada archivo listar el nombre del archivo, la extensión, el tamaño en bytes,
  64. --el nombre del tipo de archivo y el tamaño calculado en su mayor expresión y la
  65. --unidad calculada. Siendo Gigabytes si al menos pesa un gigabyte, Megabytes
  66. --si al menos pesa un megabyte, Kilobyte si al menos pesa un kilobyte o en su
  67. --defecto expresado en bytes.
  68. --Por ejemplo, si el archivo imagen.jpg pesa 40960 bytes entonces debe figurar
  69. --40 en la columna Tamaño Calculado y 'Kilobytes' en la columna unidad.
  70. SELECT A.Nombre, A.Extension, A.Tamaño, T.TipoArchivo,
  71. CASE
  72. WHEN A.Tamaño < 1024 THEN A.Tamaño
  73. WHEN A.Tamaño BETWEEN 1024 AND 1048575 THEN A.Tamaño/1024
  74. WHEN A.Tamaño BETWEEN 1048576 AND (1E+09-1) THEN A.Tamaño/1048576
  75. WHEN A.Tamaño>= 1E+09 THEN A.Tamaño/1E+09
  76. END AS TamañoCalculado,
  77. CASE
  78. WHEN A.Tamaño < 1024 THEN 'Byte'
  79. WHEN A.Tamaño BETWEEN 1024 AND 1048575 THEN 'Kilobyte'
  80. WHEN A.Tamaño BETWEEN 1048576 AND (1E+09 -1) THEN 'Megabyte'
  81. WHEN A.Tamaño>= 1E+09 THEN 'Gigabyte'
  82. END AS Unidad
  83. FROM Archivos A INNER JOIN TiposArchivos T ON A.IDTipoArchivo=T.IDTipoArchivo
  84.  
  85. --11 Listar los nombres de archivo y extensión de los archivos que han sido compartidos.
  86. SELECT A.Nombre, A.Extension FROM Archivos A INNER JOIN ArchivosCompartidos C ON A.IDArchivo=C.IDArchivo
  87.  
  88. --12 Listar los nombres de archivo y extensión de los archivos que han sido
  89. --compartidos a usuarios con apellido 'Clarck' o 'Jones'
  90. SELECT A.Nombre, A.Extension FROM Archivos A
  91. INNER JOIN ArchivosCompartidos C ON A.IDArchivo=C.IDArchivo
  92. INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  93. WHERE U.Apellido='Clarck' OR U.Apellido='Jones'
  94.  
  95. --13 Listar los nombres de archivo, extensión, apellidos y nombres de los usuarios
  96. --a quienes se le hayan compartido archivos con permiso de 'Escritura'
  97. SELECT A.Nombre, A.Extension, U.Apellido, U.Nombre FROM Archivos A
  98. INNER JOIN ArchivosCompartidos C ON A.IDArchivo=C.IDArchivo
  99. INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  100. INNER JOIN Permisos P ON C.IDPermiso=P.IDPermiso
  101. WHERE P.Nombre='Escritura'
  102.  
  103. --14 Listar los nombres de archivos y extensión de los archivos que no han sido compartidos.
  104. SELECT A.Nombre, A.Extension FROM Archivos A
  105. LEFT JOIN ArchivosCompartidos C ON A.IDArchivo=C.IDArchivo
  106. WHERE C.IDArchivo IS NULL
  107.  
  108. --15 Listar los apellidos y nombres de los usuarios dueños que tienen archivos eliminados.
  109. SELECT DISTINCT U.Apellido, U.Nombre
  110. FROM Archivos A INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  111. WHERE A.Eliminado=1
  112.  
  113. --16 Listar los nombres de los tipos de suscripciones, sin repetir, que tienen
  114. --archivos que pesan al menos 120 Megabytes.
  115. SELECT DISTINCT TU.TipoUsuario AS tipoSuscripcion
  116. FROM TiposUsuario TU INNER JOIN Archivos A ON TU.IDTipoUsuario=A.IDUsuarioDueño
  117. WHERE A.Tamaño/1048576>=120
  118.  
  119. --17 Listar los apellidos y nombres de los usuarios dueños, nombre del archivo,
  120. --extensión, fecha de creación, fecha de modificación y la cantidad de días
  121. --transcurridos desde la última modificación. Sólo incluir a los archivos que se
  122. --hayan modificado (fecha de modificación distinta a la fecha de creación).
  123. SELECT U.Apellido, U.Nombre, A.Nombre, A.Extension, A.FechaCreacion, A.FechaUltimaModificacion
  124. FROM Archivos A INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  125. WHERE A.FechaCreacion<>A.FechaUltimaModificacion
  126.  
  127. --18 Listar nombres de archivos, extensión, tamaño, apellidos y nombres del
  128. --usuario dueño del archivo, apellido y nombre del usuario que tiene el archivo
  129. --compartido y el nombre de permiso otorgado.
  130. SELECT  A.Nombre, A.Extension, A.Tamaño, UD.Apellido+', '+UD.Nombre AS Dueño,
  131. UC.Nombre+', '+UC.Apellido AS UserCompartido,
  132. P.Nombre AS TipoPermiso
  133. FROM Archivos A
  134. INNER JOIN Usuarios UD ON A.IDUsuarioDueño=UD.IDUsuario
  135. INNER JOIN ArchivosCompartidos C ON A.IDArchivo=C.IDArchivo
  136. INNER JOIN Usuarios UC ON C.IDUsuario=UC.IDUsuario
  137. INNER JOIN Permisos P ON C.IDPermiso=P.IDPermiso
  138.  
  139. --19 Listar nombres de archivos, extensión, tamaño, apellidos y nombres del
  140. --usuario dueño del archivo, apellido y nombre del usuario que tiene el archivo
  141. --compartido y el nombre de permiso otorgado. Sólo listar aquellos registros
  142. --cuyos tipos de usuarios coincidan tanto para el dueño como para el usuario al
  143. --que le comparten el archivo.
  144. SELECT  A.Nombre, A.Extension, A.Tamaño, UD.Apellido+', '+UD.Nombre AS Dueño,
  145. UC.Nombre+', '+UC.Apellido AS UserCompartido,
  146. P.Nombre AS TipoPermiso
  147. FROM Archivos A
  148. INNER JOIN Usuarios UD ON A.IDUsuarioDueño=UD.IDUsuario
  149. INNER JOIN ArchivosCompartidos C ON A.IDArchivo=C.IDArchivo
  150. INNER JOIN Usuarios UC ON C.IDUsuario=UC.IDUsuario
  151. INNER JOIN Permisos P ON C.IDPermiso=P.IDPermiso
  152. WHERE UD.IDTipoUsuario=UC.IDTipoUsuario
  153.  
  154. --20 Apellidos y nombres de los usuarios que tengan compartido o sean dueños del
  155. --archivo con nombre 'Documento Legal'.
  156. SELECT U.Apellido, U.Nombre
  157. FROM Archivos A
  158. INNER JOIN Usuarios U ON A.IDUsuarioDueño = U.IDUsuario
  159. WHERE A.Nombre = 'Documento Legal'
  160. UNION
  161. SELECT UC.Apellido, UC.Nombre
  162. FROM Archivos A
  163. INNER JOIN ArchivosCompartidos AC ON A.IDArchivo = AC.IDArchivo
  164. INNER JOIN Usuarios UC ON AC.IDUsuario = UC.IDUsuario
  165. WHERE A.Nombre = 'Documento Legal';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement