Informe del panel - Temas

Esta es una versión SQL del Informe del Panel para Temas.

Este informe proporciona un recuento de los temas nuevos creados diariamente dentro de un rango de fechas especificado. El informe no incluye mensajes personales, solo temas regulares que son visibles en el foro.

--[params]
-- date :start_date
-- date :end_date

SELECT 
     p.created_at::date as day,
    COUNT(p.id) AS topics_created
FROM posts p
INNER JOIN topics t ON t.id = p.topic_id AND t.deleted_at ISNULL
WHERE p.created_at::date BETWEEN :start_date AND :end_date
    AND p.post_number = 1
    AND p.user_id > 0 
    AND p.deleted_at ISNULL
    AND t.archetype = 'regular'
GROUP BY p.created_at::date
ORDER BY p.created_at::date ASC

Explicación de la consulta SQL

La consulta SQL realiza las siguientes acciones:

  • Definición de parámetros: Acepta dos parámetros, :start_date y :end_date, que definen el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato YYYY-MM-DD.
  • Selección de datos: La consulta selecciona la fecha de creación de las publicaciones (p.created_at) y el recuento de los ID de las publicaciones (COUNT(p.id)) como topics_created.
  • Uniones: Une la tabla posts con la tabla topics en sus respectivos campos id, asegurando que solo se consideren los temas no eliminados (t.deleted_at ISNULL).
  • Filtros: La consulta filtra las publicaciones para incluir solo aquellas que:
    • Fueron creadas dentro del rango de fechas especificado (p.created_at::date BETWEEN :start_date AND :end_date).
    • Son la primera publicación en un tema (p.post_number = 1), lo que indica el inicio de un nuevo tema.
    • Fueron creadas por usuarios registrados (p.user_id > 0), excluyendo las publicaciones del sistema.
    • No han sido eliminadas (p.deleted_at ISNULL).
    • Pertenecen a temas del arquetipo ‘regular’ (t.archetype = 'regular'), excluyendo mensajes personales.
  • Agrupación: Los resultados se agrupan por la fecha de creación de las publicaciones (p.created_at::date).
  • Ordenación: La salida final se ordena por la fecha de creación en orden ascendente (ORDER BY p.created_at::date ASC), proporcionando una vista cronológica de la creación de nuevos temas.

Resultados de ejemplo

day topics_created
2023-11-11 18
2023-11-12 10
2023-11-13 21
2023-11-14 19
2023-11-15 22
4 Me gusta