현재 투표 수 조회 쿼리

안녕하세요, SQL 초보입니다.

“몇 명의 사용자가” “몇 표를” 투표했는지 목록을 가져오고 싶습니다. 저희 인스턴스에서는 1인당 10표까지 투표할 수 있습니다. 결과 테이블은 다음과 같아야 합니다:

투표 수 사용자 수
10 25
9 32
8 43
(etc)

제 첫 SQL 쿼리에서 여기까지 왔습니다:

SELECT user_id, count(user_id)
FROM discourse_voting_votes
GROUP BY user_id
ORDER BY count DESC

이 쿼리는 투표 수 기준으로 정렬된 사용자 목록을 반환합니다. 적어도 이 결과를 바탕으로 수동으로 원하는 결과를 계산할 수는 있지만, 번거롭고 오류가 발생하기 쉽습니다.

죄송하지만 이 또한 제 첫 SQL 쿼리라 어떻게 될지 지켜봐야 할 것 같습니다… :slightly_smiling_face: 그래도 도움이 될까요?

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

완벽해요! 스크립트와 작은 SQL 수업을 정말 감사드립니다. 이 내용도 여러분께 도움이 되었기를 바랍니다.

이 쿼리가 다른 사람들에게도 유용할 것 같아요. 저희의 경우, 자원봉사자들이 다른 동료들과 비교했을 때 자신의 투표권을 얼마나 많이/적게 사용하고 있는지에 대해 더 잘 인식할 수 있도록 이 투표 분포를 보여주고 싶습니다. 궁극적인 목표는 사용된 투표 수를 늘리는 것입니다.

잘 작동해서 정말 기쁩니다. :+1: 저는 한동안 데이터 탐색기를 연습해 보고 싶었거든요. 이번이 딱 좋은 기회라고 생각해서, 오히려 제가 감사해야 할 것 같습니다. :slightly_smiling_face:

결과가 사용자의 현재 투표 수 합계로 제한되도록 ‘archive = false’ 줄을 추가했습니다. 과거의 투표는 포함되지 않습니다. 이 사용 사례에는 이것이 맞을 것 같지만, '총합계’를 원하신다면 해당 줄을 제거해 주세요.

다시 한번 감사합니다. :+1::slightly_smiling_face:

아, 이 기능이 뭔지 몰랐습니다. 네, 제가 찾고 있던 쿼리에 딱 맞네요. 다시 한번 감사합니다. 이미 이 데이터를 사용 중입니다.