Je veux obtenir une liste de « combien d’utilisateurs » ont lancé « combien de votes ». Dans notre instance, nous avons une limite de 10 votes par personne. Le tableau résultant ressemblerait à ceci :
Nombre de votes
Nombre d’utilisateurs
10
25
9
32
8
43
(etc)
Dans ce qui est mon premier SQL, voici jusqu’où je suis arrivé :
SELECT user_id, count(user_id)
FROM discourse_voting_votes
GROUP BY user_id
ORDER BY count DESC
Cela donne une liste d’utilisateurs triés par le nombre de votes émis. Au moins avec cela, je peux calculer manuellement le résultat souhaité, mais c’est fastidieux et sujet aux erreurs.
Je crains que ce soit aussi ma première requête SQL, alors nous verrons bien… mais est-ce que cela peut aider ?
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
PARFAIT ! Merci beaucoup ! Pour le script et la petite leçon de SQL. J’espère que cela vous a été utile aussi.
Je parie que cette requête sera utile à d’autres. Dans notre cas, nous voulons montrer cette distribution des votes afin que nos bénévoles puissent être plus conscients de l’utilisation qu’ils font de leurs votes par rapport à leurs pairs. L’objectif final étant d’augmenter le nombre de votes utilisés.
Je suis vraiment ravi que cela ait fonctionné. J’avais envie de m’entraîner avec l’explorateur de données depuis un moment et cela semblait être une occasion parfaite, donc en réalité, c’est à moi de vous remercier.
J’ai ajouté la ligne ‘archive = false’ pour limiter les résultats au total actuel des votes d’un utilisateur, et non inclure les historiques. Je pense que c’est correct pour votre cas d’utilisation, mais supprimez-la si vous voulez un ‘total général’.