Quero obter uma lista de “quantos usuários” lançaram “quantos votos”. Em nossa instância, temos um limite de 10 votos por pessoa. A tabela resultante ficaria assim:
Número de votos
Número de usuários
10
25
9
32
8
43
(etc)
No que é meu primeiro SQL, cheguei até aqui:
SELECT user_id, count(user_id)
FROM discourse_voting_votes
GROUP BY user_id
ORDER BY count DESC
Isso resulta em uma lista de usuários classificados pelo número de votos lançados. Pelo menos com isso posso calcular manualmente o resultado desejado, mas é tedioso e propenso a erros.
Receio que esta também seja a minha primeira consulta SQL, então veremos como isto corre… mas isto ajuda de alguma forma?
WITH votes AS (
SELECT user_id, count(user_id) as Number_of_Votes
FROM discourse_voting_votes dvv
WHERE dvv.archive = false
GROUP BY user_id
ORDER BY Number_of_Votes DESC
)
SELECT Number_of_Votes, count(*) AS Number_of_Users
FROM votes
GROUP BY Number_of_Votes
ORDER BY Number_of_Votes DESC
PERFEITO! Muito obrigado! Pelo script e pela pequena aula de SQL. Espero que isso tenha sido útil para você também.
Aposto que esta consulta será útil para outras pessoas. No nosso caso, queremos mostrar essa distribuição de votos para que nossos voluntários possam ter mais autoconsciência sobre o quanto / o pouco que estão usando seus votos em comparação com outros colegas. O objetivo final é aumentar o número de votos utilizados.
Fico muito feliz que tenha funcionado. Eu queria praticar com o explorador de dados há algum tempo e esta pareceu uma oportunidade perfeita, então, na verdade, eu deveria estar agradecendo a você.
Adicionei a linha ‘archive = false’ para restringir os resultados ao total de votos atuais do usuário, e não incluir os históricos. Acho que isso está certo para o seu caso de uso, mas remova-a se quiser um ‘total geral’.