Advertisement
Guest User

Ejercicios 2 - Curso BD

a guest
Jun 7th, 2022
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.98 KB | None | 0 0
  1. -- Obtener a todos los usuarios que han realizado un préstamo en los últimos diez días.
  2. SELECT DISTINCT
  3.        usuarios.usuario_id,
  4.        CONCAT(usuarios.nombre, ' ', usuarios.apellidos) AS 'nombre completo'
  5.   FROM usuarios
  6.  INNER JOIN libros_usuarios ON usuarios.usuario_id = libros_usuarios.usuario_id
  7.        AND libros_usuarios.fecha_creacion >= CURDATE() - INTERVAL 10 DAY;
  8.  
  9. -- Obtener a todos los usuarios que no ha realizado ningún préstamo.
  10. SELECT DISTINCT
  11.        usuarios.usuario_id,
  12.        CONCAT(usuarios.nombre, ' ', usuarios.apellidos) AS 'nombre completo'
  13.   FROM usuarios
  14.   LEFT JOIN libros_usuarios ON usuarios.usuario_id = libros_usuarios.usuario_id
  15.  WHERE libros_usuarios.libro_id IS NULL;
  16.  
  17. -- Listar de forma descendente a los cinco usuarios con más préstamos.
  18. SELECT
  19.        usuarios.usuario_id,
  20.        CONCAT(usuarios.nombre, ' ', usuarios.apellidos) AS 'nombre completo',
  21.        COUNT(*) AS prestamos
  22.   FROM usuarios
  23.  INNER JOIN libros_usuarios ON usuarios.usuario_id = libros_usuarios.usuario_id
  24.  GROUP BY usuarios.usuario_id
  25.  ORDER BY prestamos DESC LIMIT 5;
  26.  
  27. -- Listar 5 títulos con más préstamos en los últimos 30 días.
  28. SELECT
  29.        libros.libro_id,
  30.        libros.titulo,
  31.        COUNT(*) AS prestamos
  32.   FROM libros
  33.  INNER JOIN libros_usuarios ON libros.libro_id = libros_usuarios.libro_id
  34.        AND libros_usuarios.fecha_creacion >= CURDATE() - INTERVAL 30 DAY
  35.  GROUP BY libros.libro_id
  36.  ORDER BY prestamos DESC LIMIT 5;
  37.  
  38. -- Obtener el título de todos los libros que no han sido prestados.
  39. SELECT DISTINCT
  40.        libros.libro_id,
  41.        libros.titulo
  42.   FROM libros
  43.   LEFT JOIN libros_usuarios ON libros.libro_id = libros_usuarios.libro_id
  44.  WHERE libros_usuarios.usuario_id IS NULL;
  45.  
  46. -- Obtener la cantidad de libros prestados el día de hoy.
  47. SELECT COUNT(*) AS total_prestamos
  48.   FROM libros_usuarios
  49.  WHERE DATE(fecha_creacion) = CURDATE();
  50.  
  51. -- Obtener la cantidad de libros prestados por el autor con id 1.
  52. SELECT COUNT(*) AS total_prestamos
  53.   FROM libros_usuarios
  54.  INNER JOIN libros ON libros_usuarios.libro_id = libros.libro_id AND libros.autor_id = 1;
  55.  
  56. -- Obtener el nombre completo de los cinco autores con más préstamos.
  57. SELECT
  58.        CONCAT(autores.nombre, ' ', autores.apellido) AS 'nombre completo',
  59.       total_autor.total_prestamos AS prestamos
  60.   FROM autores
  61.  INNER JOIN
  62.        (SELECT COUNT(*) AS total_prestamos,
  63.                libros.autor_id
  64.           FROM libros_usuarios
  65.          INNER JOIN libros ON libros_usuarios.libro_id = libros.libro_id
  66.          GROUP BY libros.autor_id) AS total_autor
  67.        ON autores.autor_id = total_autor.autor_id
  68.  ORDER BY prestamos DESC LIMIT 5;
  69.  
  70. -- Obtener el título del libro con más préstamos esta semana.
  71. SELECT libros.titulo,
  72.        COUNT(*) AS prestamos
  73.   FROM libros
  74.  INNER JOIN libros_usuarios ON libros.libro_id = libros_usuarios.libro_id
  75.    AND libros_usuarios.fecha_creacion >= CURDATE() - INTERVAL 7 DAY
  76.  GROUP BY libros.libro_id
  77.  ORDER BY prestamos DESC LIMIT 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement