Este é um relatório SQL do painel para posts.
Este relatório fornece uma contagem diária de posts criados dentro de um intervalo de datas especificado. Ele foi projetado para rastrear a atividade em tópicos regulares, excluindo posts de mensagens privadas e outros arquétipos especiais.
--[params]
-- date :start_date
-- date :end_date
SELECT
p.created_at::date AS "Dia",
COUNT(p.id) AS "Contagem"
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
Explicação da Consulta SQL
- Parâmetros:
- 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,
A consulta SQL realiza as seguintes operações:
- Seleção de Dados:
- Seleciona a data (
created_at::date) em que cada post foi criado e a converte para o formato de data para ignorar o componente de hora. - Também conta o número de posts (
COUNT(p.id)) criados em cada data.
- Seleciona a data (
- Junções:
- A consulta une a tabela
postscom a tabelatopicsusando umINNER JOIN. Essa junção garante que apenas posts associados a tópicos existentes sejam considerados. - Filtra quaisquer tópicos que foram excluídos (
t.deleted_at ISNULL).
- A consulta une a tabela
- Filtros:
- Filtra posts para incluir apenas aqueles dentro do intervalo de datas especificado (
p.created_at::date BETWEEN :start_date AND :end_date). - Exclui posts excluídos (
p.deleted_at ISNULL). - Restringe os resultados a posts de tópicos regulares (
t.archetype = 'regular'). - Considera apenas posts com
p.post_type = 1, excluindo ações de moderador, sussurros e posts de pequenas ações.
- Filtra posts para incluir apenas aqueles dentro do intervalo de datas especificado (
- Agrupamento e Ordenação:
- Os resultados são agrupados pela data de criação do post (
GROUP BY p.created_at::date). - A saída final é ordenada por data em ordem crescente (
ORDER BY 1), onde1se refere à primeira coluna na instruçãoSELECT, que é a data.
- Os resultados são agrupados pela data de criação do post (
Exemplo de Resultados
| Dia | Contagem |
|---|---|
| 2023-11-12 | 25 |
| 2023-11-13 | 35 |
| 2023-11-14 | 38 |
| 2023-11-15 | 47 |
| 2023-11-16 | 36 |
| 2023-11-17 | 79 |
| … | … |