Pasados de plazo
- O(n²) · Muy difícil
- Plan completo
- SQL
- fechas
- nulos
- uniones
Enunciado
La biblioteca presta por 3 días, y hasta hoy nadie ha apuntado quién se pasó. La bibliotecaria quiere la lista entera: los préstamos que volvieron tarde y los que siguen fuera con el plazo vencido.
El retraso son los días que el libro estuvo fuera menos los 3 del plazo, contados hasta el día en que volvió o, si no ha vuelto, hasta hoy, 15 de enero de 2026. Un libro que vuelve, o que vence, justo el tercer día está a tiempo y no entra.
Muestra el título, el socio, la fecha de devolución (vacía si sigue fuera) y los días de retraso, en ese orden. Primero el mayor retraso y, si empatan, por título. Hoy se puede escribir '2026-01-15' o DATE('now').
Lo que tiene que devolver
Estas filas, en este orden
| titulo | socio | devuelto | retraso |
|---|---|---|---|
| Mapas de sal | Bruno | 2026-01-04 | 12 |
| El faro | Ana | 2026-01-09 | 4 |
| Noche larga | Luis | 2026-01-15 | 4 |
| El faro | Diego | NULL | 2 |
| Tres inviernos | Ana | 2026-01-14 | 1 |
Es lo que sale con los datos de la base de práctica del reto. Los nombres de las columnas no cuentan, las tuyas pueden llamarse como quieras: cuenta cuántas son y en qué orden van. Además de esta, el reto tiene pruebas ocultas con otros datos, que se revelan al enviar tu solución.
Empiezas con esto
SQL
SELECT l.titulo, p.socio, p.devuelto
FROM prestamos p
JOIN libros l
ON p.libro_id = l.id
WHERE p.devuelto IS NOT NULL;Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.
Más retos de O(n²)
- Paula se vaSQL · modificar datos · subconsultas
- Un aumento, no dosSQL · modificar datos · condicionales
- Un renglón para cada díaSQL · recursión · fechas · ventanas
- ¿Qué día cerramos?SQL · fechas · agrupar · condicionales
- Cada cuánto vuelvenSQL · ventanas · fechas · agrupar
- De cada 100 de nóminaSQL · ventanas · decimales