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_datee: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 dataAAAA-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 timestampviewed_atpara 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
WHERErestringe a contagem para incluir apenas visualizações que ocorreram entre os parâmetros:start_datee:end_date, que são definidos no topo da consulta. - Agrupamento de Resultados: A cláusula
GROUP BYagrupa os resultados pelo dia truncado para que a contagem de visualizações seja agregada por dia. - Seleção de Resultados: A instrução
SELECTprincipal 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 BYgarante 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 |