Este é um relatório de painel em versão SQL para Notificar Moderadores.
Este relatório de painel fornece uma contagem diária de mensagens privadas enviadas a moderadores com um tipo de notificação notify_moderators. Essa informação ajuda os administradores a entender os períodos de alta demanda pela atenção dos moderadores e pode indicar quando os usuários estão enfrentando problemas que exigem assistência de moderação.
-- [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
Explicação da Consulta SQL
A consulta funciona extraindo dados da tabela topics – especificamente, aqueles que se qualificam como mensagens privadas para moderadores dentro de um determinado período. Vamos detalhar:
- Parâmetros de Data:
- A consulta aceita dois parâmetros,
:start_datee:end_date, que definem o intervalo de datas para o relatório. Ambos os parâmetros de data aceitam o formato de dataAAAA-MM-DD.
- A consulta aceita dois parâmetros,
- Seleção e Contagem:
DATE(created_at)converte o carimbo de data/horacreated_atem um formato de data e o rotula comoday. Isso permite agrupar e contar mensagens pelo dia em que foram criadas.COUNT(1)é usado para contar o número de entradas para cada dia, rotulando essa contagem comonotifications_count.
- Critérios de Filtragem:
- A consulta filtra apenas as entradas onde o
archetypeé'private_message', garantindo que estamos olhando apenas para mensagens e não para outros tipos de tópicos. - O
subtypeé restrito a'notify_moderators', isolando casos em que os usuários notificam ou solicitam assistência de moderadores. - Verifica se o carimbo de data/hora
created_atda mensagem está entre:start_datee:end_dateespecificados. - Mensagens que foram excluídas (
deleted_at IS NULL) são excluídas da contagem para garantir que o relatório reflita apenas comunicações ativas. - Finalmente, garante que as mensagens estejam associadas a um usuário válido, confirmando
user_id > 0.
- A consulta filtra apenas as entradas onde o
- Agrupamento e Ordenação:
- A consulta usa
GROUP BY DATE(created_at)para agregar os resultados por cada dia dentro do intervalo de datas especificado. - Em seguida, ordena os resultados cronologicamente com
ORDER BY day, tornando o relatório fácil de ler e interpretar.
- A consulta usa
Resultados de Exemplo
| day | notifications_count |
|---|---|
| 2023-12-17 | 3 |
| 2023-12-18 | 1 |
| 2023-12-21 | 1 |
| 2023-12-23 | 2 |
| 2023-12-26 | 1 |