Este es una versión SQL del Informe del Panel para Publicaciones.
Este informe proporciona un recuento diario de las publicaciones creadas dentro de un rango de fechas especificado. Está diseñado para rastrear la actividad en temas regulares, excluyendo las publicaciones de mensajes privados y otros arquetipos especiales.
--[params]
-- date :start_date
-- date :end_date
SELECT
p.created_at::date AS "Día",
COUNT(p.id) AS "Recuento"
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.deleted_at ISNULL
AND t.archetype = 'regular'
AND p.post_type = 1
GROUP BY p.created_at::date
ORDER BY 1
Explicación de la Consulta SQL
- Parámetros:
- La consulta acepta dos parámetros,
:start_datey:end_date, que definen el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fechaYYYY-MM-DD.
- La consulta acepta dos parámetros,
La consulta SQL realiza las siguientes operaciones:
- Selección de Datos:
- Selecciona la fecha (
created_at::date) en la que se creó cada publicación y la convierte al formato de fecha para ignorar el componente de hora. - También cuenta el número de publicaciones (
COUNT(p.id)) creadas en cada fecha.
- Selecciona la fecha (
- Uniones:
- La consulta une la tabla
postscon la tablatopicsmediante unINNER JOIN. Esta unión asegura que solo se consideren las publicaciones asociadas con temas existentes. - Filtra los temas que han sido eliminados (
t.deleted_at ISNULL).
- La consulta une la tabla
- Filtros:
- Filtra las publicaciones para incluir solo aquellas dentro del rango de fechas especificado (
p.created_at::date BETWEEN :start_date AND :end_date). - Excluye las publicaciones eliminadas (
p.deleted_at ISNULL). - Restringe los resultados a las publicaciones de temas regulares (
t.archetype = 'regular'). - Solo considera las publicaciones
p.post_type = 1, excluyendo acciones de moderador, susurros y publicaciones de acciones pequeñas.
- Filtra las publicaciones para incluir solo aquellas dentro del rango de fechas especificado (
- Agrupación y Ordenación:
- Los resultados se agrupan por la fecha de creación de la publicación (
GROUP BY p.created_at::date). - La salida final se ordena por fecha en orden ascendente (
ORDER BY 1), donde1se refiere a la primera columna en la declaraciónSELECT, que es la fecha.
- Los resultados se agrupan por la fecha de creación de la publicación (
Resultados de Ejemplo
| Día | Recuento |
|---|---|
| 2023-11-12 | 25 |
| 2023-11-13 | 35 |
| 2023-11-14 | 38 |
| 2023-11-15 | 47 |
| 2023-11-16 | 36 |
| 2023-11-17 | 79 |
| … | … |