Este es un informe de panel SQL para Notificar a los moderadores.
Este informe de panel proporciona un recuento diario de mensajes privados enviados a los moderadores con un tipo de notificación notify_moderators. Esta información ayuda a los administradores a comprender los períodos de alta demanda de atención de los moderadores y podría indicar cuándo los usuarios están experimentando problemas que requieren asistencia de moderación.
-- [params]
-- date :start_date = 2023-12-15
-- date :end_date = 2024-01-16
SELECT
DATE(created_at) AS day,
COUNT(1) AS notifications_count
FROM topics
WHERE archetype = 'private_message'
AND subtype = 'notify_moderators'
AND created_at BETWEEN :start_date AND :end_date
AND deleted_at IS NULL
AND user_id > 0
GROUP BY DATE(created_at)
ORDER BY day
Explicación de la consulta SQL
La consulta funciona extrayendo datos de la tabla topics, específicamente aquellos que califican como mensajes privados a moderadores dentro de un período de tiempo determinado. Desglosemos:
- Parámetros de fecha:
- 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,
- Selección y recuento:
DATE(created_at)convierte la marca de tiempocreated_ata formato de fecha y la etiqueta comoday. Esto permite agrupar y contar mensajes por el día en que fueron creados.COUNT(1)se utiliza para contar el número de entradas para cada día, etiquetando este recuento comonotifications_count.
- Criterios de filtrado:
- La consulta filtra solo aquellas entradas donde el
archetypees'private_message', asegurando que solo estamos viendo mensajes y no otros tipos de temas. - El
subtypese restringe a'notify_moderators', aislando los casos en que los usuarios notifican o solicitan asistencia a los moderadores. - Comprueba que la marca de tiempo
created_atdel mensaje esté entre:start_datey:end_dateespecificados. - Los mensajes que han sido eliminados (
deleted_at IS NULL) se excluyen del recuento para garantizar que el informe refleje solo las comunicaciones activas. - Finalmente, asegura que los mensajes estén asociados con un usuario válido al confirmar
user_id > 0.
- La consulta filtra solo aquellas entradas donde el
- Agrupación y ordenación:
- La consulta utiliza
GROUP BY DATE(created_at)para agregar los resultados por cada día dentro del rango de fechas especificado. - Luego ordena los resultados cronológicamente con
ORDER BY day, lo que hace que el informe sea fácil de leer e interpretar.
- La consulta utiliza
Resultados de ejemplo
| day | notifications_count |
|---|---|
| 2023-12-17 | 3 |
| 2023-12-18 | 1 |
| 2023-12-21 | 1 |
| 2023-12-23 | 2 |
| 2023-12-26 | 1 |