Este é um relatório de painel em SQL para os principais usuários por curtidas recebidas.
Este relatório de painel mostra os principais usuários em um site pelo número de curtidas recebidas em todas as postagens. O relatório ajuda os administradores a identificar usuários altamente engajados contando as curtidas recebidas em um determinado período, auxiliando no reconhecimento de membros ativos, na avaliação da qualidade do conteúdo, no monitoramento de tendências de engajamento do usuário e na tomada de decisões informadas de gerenciamento da comunidade, como a seleção de moderadores.
--[params]
--date :start_date = 2024-01-01
--date :end_date = 2025-01-01
SELECT
ua.user_id AS user_id,
u.username as username,
COUNT(*) likes_received
FROM user_actions ua
INNER JOIN users u on ua.user_id = u.id
WHERE ua.created_at::date BETWEEN :start_date AND :end_date
AND ua.action_type = 2
GROUP BY ua.user_id, u.username, u.uploaded_avatar_id
ORDER BY likes_received DESC
Explicação da Consulta SQL
A consulta funciona da seguinte forma:
- 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. - Seleção de Dados: A consulta seleciona IDs de usuário e nomes de usuário da tabela
user_actions(ua) e da tabelausers(u), que são unidas usando o comandoINNER JOINdo SQL na condição de queua.user_idcorresponda au.id. - Filtragem de Dados: A cláusula
WHEREé usada para filtrar ações que se enquadram no intervalo de datas especificado e considera apenas ações do tipowas_liked, que é representado poraction_type = 2. - Agregação: A função
COUNT(*)em combinação com a cláusulaGROUP BYagrupa os resultados poruser_id,usernameeuploaded_avatar_id, e conta o número de curtidas que cada usuário recebeu. - Ordenação de Resultados: A cláusula
ORDER BYentão ordena os dados agregados de forma decrescente com base emlikes_received, para que o usuário com o maior número de curtidas recebidas esteja no topo do relatório.
A consulta produz uma lista de usuários juntamente com a contagem de curtidas que eles receberam no intervalo de datas fornecido, ordenados do maior para o menor.
Exemplo de Resultados
| user | username | likes_received |
|---|---|---|
| user1 | user1 | 748 |
| user2 | user2 | 324 |
| user3 | user3 | 308 |
| … | … | … |