Ich möchte eine Liste erhalten, wie viele Benutzer wie viele Stimmen abgegeben haben. In unserer Instanz gibt es ein Limit von 10 Stimmen pro Person. Die resultierende Tabelle würde so aussehen:
Anzahl der Stimmen
Anzahl der Benutzer
10
25
9
32
8
43
(usw.)
In meinem ersten SQL-Code überhaupt bin ich bisher gekommen:
SELECT user_id, count(user_id)
FROM discourse_voting_votes
GROUP BY user_id
ORDER BY count DESC
Dies ergibt eine Liste von Benutzern, sortiert nach der Anzahl der abgegebenen Stimmen. Zumindest damit kann ich das gewünschte Ergebnis manuell berechnen, aber es ist mühsam und fehleranfällig.
Ich fürchte, dies ist auch meine erste SQL-Abfrage, mal sehen, wie das läuft… aber ist das eine Hilfe?
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
PERFEKT! Vielen Dank! Für das Skript und die kleine SQL-Lektion. Ich hoffe, das war auch für Sie nützlich.
Ich wette, diese Abfrage wird auch für andere nützlich sein. In unserem Fall möchten wir diese Verteilung der Stimmen anzeigen, damit sich unsere Freiwilligen bewusster darüber werden, wie viel / wie wenig sie ihre Stimmen im Vergleich zu anderen Kollegen nutzen. Das ultimative Ziel ist es, die Anzahl der genutzten Stimmen zu erhöhen.
Ich freue mich sehr, dass es funktioniert hat. Ich wollte schon seit einiger Zeit mit dem Daten-Explorer üben und dies schien eine perfekte Gelegenheit zu sein, daher sollte ich Ihnen eigentlich danken.
Ich habe die Zeile ‘archive = false’ hinzugefügt, um die Ergebnisse auf die aktuelle Stimmenanzahl eines Benutzers zu beschränken und keine historischen Daten einzuschließen. Ich denke, das ist für Ihren Anwendungsfall richtig, aber entfernen Sie es, wenn Sie eine ‘Gesamtsumme’ wünschen.