Advertisement
any15015

Act2.3_Labo3

Sep 16th, 2024 (edited)
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.65 KB | None | 0 0
  1. --1 La cantidad de archivos con extensión zip.
  2. SELECT COUNT(*) AS cantArchZip FROM Archivos WHERE extension='zip'
  3. --2 La cantidad de archivos que fueron modificados y, por lo tanto, su fecha de
  4. --última modificación no es la misma que la fecha de creación.
  5. SELECT COUNT(*) AS archModificados FROM Archivos WHERE fechaCreacion<>FechaUltimaModificacion
  6. --3 La fecha de creación más antigua de los archivos con extensión pdf.
  7. SELECT MIN(FechaCreacion) AS pdfAntiguo FROM Archivos WHERE Extension='pdf'
  8. --4 La cantidad de extensiones distintas cuyos archivos tienen en su nombre o en
  9. --su descripción la palabra 'Informe' o 'Documento'.
  10. SELECT COUNT(DISTINCT Extension) AS extencionesIoD FROM Archivos WHERE (nombre LIKE'%Informe%' OR nombre LIKE'%Documento%') OR (descripción LIKE'%Informe%' OR descripción LIKE'%Documento%')
  11. --5 El promedio de tamaño (expresado en Megabytes) de los archivos con
  12. --extensión 'doc', 'docx', 'xls', 'xlsx
  13. SELECT avg(Tamaño)/1048576 AS promTamaño FROM Archivos WHERE extensión IN('doc','docx','xls','xlsx')
  14. --6 La cantidad de archivos que le fueron compartidos al usuario con apellido 'Clarck'
  15. SELECT COUNT(*) AS compartidosClarck
  16. FROM ArchivosCompartidos AC INNER JOIN Usuarios U ON AC.IDUsuario=U.IDUsuario WHERE U.Apellido ='Clarck'
  17. --7 La cantidad de tipos de usuario que tienen asociado usuarios que registren,
  18. --como dueños, archivos con extensión pdf.
  19. SELECT COUNT(DISTINCT U.IDTipoUsuario) AS asociadoYdueño FROM Usuarios U
  20. INNER JOIN Archivos A ON U.IDUsuario=A.IDUsuarioDueño
  21. WHERE A.Extension='pdf'
  22. --8 El tamaño máximo expresado en Megabytes de los archivos que hayan sido creados en el año 2024.
  23. SELECT MAX(Tamaño/1048576) FROM Archivos WHERE YEAR(fechaCreacion)=2024
  24. --9  El nombre del tipo de usuario y la cantidad de usuarios distintos de dicho tipo
  25. --que registran, como dueños, archivos con extensión pdf.
  26. SELECT TU.TipoUsuario AS tipoDeUsuario, COUNT(DISTINCT U.IDUsuario) AS cantUsuarios
  27. FROM TiposUsuario TU
  28. INNER JOIN Usuarios U ON TU.IDTipoUsuario=U.IDTipoUsuario
  29. INNER JOIN Archivos A ON U.IDUsuario=A.IDUsuarioDueño
  30. WHERE A.Extension='pdf'
  31. GROUP BY TU.TipoUsuario
  32. --10 El nombre y apellido de los usuarios dueños y la suma total del tamaño de los archivos que tengan
  33. --compartidos con otros usuarios. Mostrar ordenado de mayor sumatoria de tamaño a menor.
  34. SELECT U.Nombre, U.Apellido, SUM(A.Tamaño) AS TamañoArcComp FROM Usuarios U
  35. INNER JOIN Archivos A ON U.IDUsuario=A.IDUsuarioDueño
  36. INNER JOIN ArchivosCompartidos AC ON A.IDArchivo=AC.IDArchivo
  37. GROUP BY U.Nombre, U.Apellido ORDER BY TamañoArcComp DESC
  38. --11 El nombre del tipo de archivo y el promedio de tamaño de los archivos que corresponden a dicho tipo de archivo
  39. SELECT TA.TipoArchivo, avg(A.Tamaño) AS promedioTamaño FROM Archivos A INNER JOIN TiposArchivos TA ON A.IDTipoArchivo=TA.IDTipoArchivo GROUP BY TA.TipoArchivo
  40. --12 Por cada extensión, indicar la extensión, la cantidad de archivos con esa extensión y
  41. --el total acumulado en bytes. Ordenado por cantidad de archivos de forma ascendente.
  42. SELECT A.Extension, COUNT(*) AS totalArchivos, SUM(A.Tamaño) AS totalBytes
  43. FROM Archivos A GROUP BY A.Extension ORDER BY totalArchivos
  44. --13 Por cada usuario, indicar IDUSuario, Apellido, Nombre y la sumatoria total en
  45. --bytes de los archivos que es dueño. Si algún usuario no registra archivos
  46. --indicar 0 en la sumatoria total.
  47. SELECT U.IDUsuario, U.Apellido,U.Nombre,
  48. ISNULL(SUM(A.Tamaño), 0) AS sumaArchivos
  49. FROM Usuarios U LEFT JOIN Archivos A ON U.IDUsuario=A.IDUsuarioDueño
  50. GROUP BY U.IDUsuario, U.Apellido,U.Nombre
  51. --14 Los tipos de archivos que fueron compartidos más de una vez con el permiso
  52. --con nombre 'Lectura'
  53. SELECT TA.TipoArchivo
  54. FROM Archivos A INNER JOIN TiposArchivos TA ON A.IDTipoArchivo=TA.IDTipoArchivo
  55. INNER JOIN ArchivosCompartidos AC ON A.IDArchivo=AC.IDArchivo
  56. INNER JOIN Permisos P ON Ac.IDPermiso=P.IDPermiso
  57. WHERE P.Nombre='Lectura'
  58. GROUP BY TA.TipoArchivo HAVING COUNT(*)>1
  59. --15 Escribí una consulta que requiera una función de resumen, el uso de joins y de
  60. --having. Pega en el Foro de Actividad 2.3 en el hilo "Queries del Ejercicio 15" el
  61. --enunciado de la consulta y la tabla en formato texto plano de lo que daría
  62. --como resultado con los datos que trabajamos en conjunto.
  63. --Selecionar Extension de Archivo junto con Apellido y Nombre de usuarios dueños que son dueños de más
  64. --de un archivo con la misma extensión y además son usuarios Plus o Premium
  65. SELECT U.Apellido, U.Nombre, A.Extension FROM Archivos A
  66. INNER JOIN Usuarios U ON A.IDUsuarioDueño=U.IDUsuario
  67. INNER JOIN TiposUsuario TU ON U.IDTipoUsuario=TU.IDTipoUsuario
  68. WHERE TU.TipoUsuario LIKE '%Plus' OR TU.TipoUsuario LIKE '%Premium'
  69. GROUP BY U.Apellido, U.Nombre, A.Extension HAVING COUNT(*)>1
  70. --16 Por cada tipo de archivo indicar el tipo de archivo y el tamaño del archivo de
  71. --dicho tipo que sea más pesado.
  72. SELECT TA.TipoArchivo, MAX(A.Tamaño) AS MaxTamaño
  73. FROM Archivos A INNER JOIN TiposArchivos TA ON A.IDTipoArchivo=TA.IDTipoArchivo
  74. GROUP BY TA.TipoArchivo
  75. --17 El nombre del tipo de archivo y el promedio de tamaño de los archivos que
  76. --corresponden a dicho tipo de archivo. Solamente listar aquellos registros que
  77. --superen los 50 Megabytes de promedio.
  78. SELECT TA.TipoArchivo, avg(A.Tamaño) AS promedioTamaño FROM Archivos A
  79. INNER JOIN TiposArchivos TA ON A.IDTipoArchivo=TA.IDTipoArchivo
  80. GROUP BY(TA.TipoArchivo)
  81. HAVING avg(A.Tamaño/1048576)>50
  82. --18 Listar las extensiones que registren más de 2 archivos que no hayan sido compartidos.
  83. SELECT A.Extension FROM Archivos A
  84. LEFT JOIN ArchivosCompartidos AC ON A.IDArchivo=AC.IDArchivo
  85. WHERE AC.IDArchivo IS NULL
  86. GROUP BY A.Extension
  87. HAVING COUNT(A.IDArchivo)>2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement