A menudo querrás extraer datos de un período de tiempo específico. Puedes hacerlo codificando en tu consulta el período de tiempo, pero para que tu informe sea más útil en el futuro, puedes añadir un parámetro de fecha:
Esta consulta está diseñada para contar el número total de publicaciones en cada categoría (excluyendo publicaciones y temas eliminados, mensajes privados y temas sin categoría) que se crearon dentro de un rango de fechas específico, y luego ordenar las categorías por el número total de publicaciones en orden descendente.
-- [params]
-- date :start_date -- Este es un parámetro para la fecha de inicio del rango
-- date :end_date -- Este es un parámetro para la fecha de fin del rango
SELECT
t.category_id,
COUNT(p.id) AS "Total Posts" -- Cuenta el número de publicaciones en cada categoría
FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.created_at::date BETWEEN :start_date AND :end_date -- Filtra las publicaciones creadas entre la fecha de inicio y la fecha de fin (::date convierte la marca de tiempo created_at en una fecha)
AND t.deleted_at IS NULL
AND p.deleted_at IS NULL
AND t.archetype <> 'private message'
AND p.user_id > 0
AND t.category_id IS NOT NULL
GROUP BY 1
ORDER BY 2 DESC
Utilizar el estilo de parámetro date en lugar de string hace que la introducción del valor del parámetro sea mucho más intuitiva, especialmente cuando se comparte con otras personas.
Otro consejo notable para este tipo de consulta es convertir created_at a fecha. Como el valor se almacena en la base de datos como una marca de tiempo, si no lo conviertes a fecha, la consulta no captará los resultados de la fecha de :end_date en sí.
Puedes comprobar qué valores se almacenan como marcas de tiempo utilizando el árbol del Explorador:
Esta consulta es principalmente un ejemplo para demostrar los principios. Esperamos que te resulte útil, pero si tienes alguna pregunta, por favor, hazla a continuación. ![]()
