Relatório do Painel - Visualizações do Perfil do Usuário

Este é um relatório de painel em versão SQL para visualizações de perfil de usuário.

Este relatório de painel gera estatísticas sobre o número total de visualizações de perfil de usuário por dia dentro de um intervalo de datas especificado.

-- [params]
-- date :start_date = 2024-01-05
-- date :end_date = 2024-02-06

WITH profile_views_per_day AS (
  SELECT
    date_trunc('day', viewed_at) AS day,
    COUNT(*) AS views
  FROM user_profile_views
  WHERE viewed_at >= :start_date AND viewed_at <= :end_date
  GROUP BY day
)
SELECT
  day::date,
  views
FROM profile_views_per_day
ORDER BY day

Explicação da Consulta SQL

Aqui está um detalhamento de como a consulta funciona:

  • Parâmetros: A consulta aceita dois parâmetros, :start_date e :end_date, que permitem ao usuário especificar o intervalo de datas para o relatório. Ambos os parâmetros de data aceitam o formato de data AAAA-MM-DD.
  • Expressão de Tabela Comum (CTE): A consulta começa com uma CTE chamada profile_views_per_day. Este é um conjunto de resultados temporário que usaremos na consulta principal.
  • Truncamento de Data: Dentro da CTE, a função date_trunc é usada para truncar o timestamp viewed_at para o dia. Isso significa que, independentemente da hora em que um perfil foi visualizado, ele será contado com base apenas na data.
  • Contagem de Visualizações: A função COUNT(*) conta o número de visualizações de perfil para cada dia.
  • Filtragem por Intervalo de Datas: A cláusula WHERE restringe a contagem para incluir apenas visualizações que ocorreram entre os parâmetros :start_date e :end_date, que são definidos no topo da consulta.
  • Agrupamento de Resultados: A cláusula GROUP BY agrupa os resultados pelo dia truncado para que a contagem de visualizações seja agregada por dia.
  • Seleção de Resultados: A instrução SELECT principal recupera os resultados da CTE. Ela seleciona o dia truncado (convertido para o tipo data) e o número de visualizações para esse dia.
  • Ordenação de Resultados: Finalmente, a cláusula ORDER BY garante que os resultados sejam apresentados em ordem cronológica por dia.

Exemplo de Resultados

day views
2024-01-05 263
2024-01-06 374
2024-01-07 272
2024-01-08 409
2024-01-09 606
2 curtidas