Informe del panel de control - Notificar a los moderadores

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_date y :end_date, que definen el rango de fechas para el informe. Ambos parámetros de fecha aceptan el formato de fecha YYYY-MM-DD.
  • Selección y recuento:
    • DATE(created_at) convierte la marca de tiempo created_at a formato de fecha y la etiqueta como day. 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 como notifications_count.
  • Criterios de filtrado:
    • La consulta filtra solo aquellas entradas donde el archetype es 'private_message', asegurando que solo estamos viendo mensajes y no otros tipos de temas.
    • El subtype se 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_at del mensaje esté entre :start_date y :end_date especificados.
    • 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.
  • 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.

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
4 Me gusta