Este é um relatório de painel em SQL para tópicos.
Este relatório fornece uma contagem de novos tópicos criados diariamente dentro de um intervalo de datas especificado. O relatório não inclui mensagens pessoais, apenas tópicos regulares que são visíveis no fórum.
--[params]
-- date :start_date
-- date :end_date
SELECT
p.created_at::date as day,
COUNT(p.id) AS topics_created
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.post_number = 1
AND p.user_id > 0
AND p.deleted_at ISNULL
AND t.archetype = 'regular'
GROUP BY p.created_at::date
ORDER BY p.created_at::date ASC
Explicação da Consulta SQL
A consulta SQL executa as seguintes ações:
- Definição de Parâmetros: 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 formatoAAAA-MM-DD. - Seleção de Dados: A consulta seleciona a data de criação das postagens (
p.created_at) e a contagem de IDs de postagem (COUNT(p.id)) comotopics_created. - Junções: Ela une a tabela
postscom a tabelatopicsem seus respectivos camposid, garantindo que apenas tópicos não excluídos (t.deleted_at ISNULL) sejam considerados. - Filtros: A consulta filtra as postagens para incluir apenas aquelas que:
- Foram criadas dentro do intervalo de datas especificado (
p.created_at::date BETWEEN :start_date AND :end_date). - São a primeira postagem em um tópico (
p.post_number = 1), indicando o início de um novo tópico. - Foram criadas por usuários registrados (
p.user_id > 0), excluindo postagens do sistema. - Não foram excluídas (
p.deleted_at ISNULL). - Pertencem a tópicos do arquétipo ‘regular’ (
t.archetype = 'regular'), excluindo mensagens pessoais.
- Foram criadas dentro do intervalo de datas especificado (
- Agrupamento: Os resultados são agrupados pela data de criação das postagens (
p.created_at::date). - Ordenação: A saída final é ordenada pela data de criação em ordem crescente (
ORDER BY p.created_at::date ASC), fornecendo uma visão cronológica da criação de novos tópicos.
Exemplo de Resultados
| day | topics_created |
|---|---|
| 2023-11-11 | 18 |
| 2023-11-12 | 10 |
| 2023-11-13 | 21 |
| 2023-11-14 | 19 |
| 2023-11-15 | 22 |
| … | … |