Dies ist eine SQL-Version des Dashboard-Berichts für das Verhältnis der Benutzerkennzeichnungen.
Dieser Dashboard-Bericht generiert eine Liste von Benutzern, geordnet nach dem Verhältnis der Antworten des Personals auf ihre Kennzeichnungen (zugestimmt und abgelehnt). Der Bericht enthält Informationen über die Kennzeichnungsaktivität jedes Benutzers, insbesondere über die Anzahl der Kennzeichnungen, denen von Moderatoren zugestimmt, die abgelehnt oder ignoriert wurden, sowie eine berechnete Punktzahl, die die Leistung des Benutzers bei der Kennzeichnung darstellt.
Der Bericht ist nützlich für Administratoren, um Benutzer zu identifizieren, die unangemessene Inhalte korrekt kennzeichnen, das Engagement der Benutzer bei der Community-Moderation einzuschätzen, Feedback zu Kennzeichnungspraktiken zu geben und die Leistung der Benutzer bei der Kennzeichnung für potenzielle Moderatorenrollen zu bewerten.
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2024-02-01
SELECT
u.id AS user_id,
u.username,
CASE
WHEN u.silenced_till IS NOT NULL THEN 't'
ELSE 'f'
END AS silenced,
SUM(CASE WHEN rs.status = 2 THEN 1 ELSE 0 END)::numeric AS disagreed_flags,
SUM(CASE WHEN rs.status = 1 THEN 1 ELSE 0 END)::numeric AS agreed_flags,
SUM(CASE WHEN rs.status = 3 THEN 1 ELSE 0 END)::numeric AS ignored_flags,
(
CASE
WHEN SUM(CASE WHEN rs.status = 2 THEN 1 ELSE 0 END)::numeric = 0 THEN
SUM(CASE WHEN rs.status = 1 THEN 1 ELSE 0 END)::numeric * SUM(CASE WHEN rs.status = 1 THEN 1 ELSE 0 END)::numeric
ELSE
ROUND(
(1 - (SUM(CASE WHEN rs.status = 1 THEN 1 ELSE 0 END)::numeric / SUM(CASE WHEN rs.status = 2 THEN 1 ELSE 0 END))) *
(SUM(CASE WHEN rs.status = 2 THEN 1 ELSE 0 END) - SUM(CASE WHEN rs.status = 1 THEN 1 ELSE 0 END)::numeric)
)
END
) AS score
FROM
users AS u
INNER JOIN reviewable_scores AS rs ON rs.user_id = u.id
WHERE
u.id > 0
AND rs.created_at >= :start_date
AND rs.created_at <= :end_date
GROUP BY
u.id,
u.username,
u.uploaded_avatar_id,
u.silenced_till
ORDER BY
score DESC
LIMIT 100
SQL-Abfrageerklärung
Hier ist eine Aufschlüsselung der Abfrage:
- Parameter: Die Abfrage akzeptiert zwei Parameter,
:start_dateund:end_date, mit denen der Benutzer den Datumsbereich für den Bericht festlegen kann. Beide Datumsparameter akzeptieren das DatumsformatJJJJ-MM-TT. - SELECT-Klausel: Die Abfrage wählt die folgenden Spalten aus:
user_id: Die eindeutige Kennung des Benutzers.username: Der Benutzername des Benutzers.silenced: Ein boolescher Wert, der angibt, ob der Benutzer derzeit stummgeschaltet ist.disagreed_flags: Die Gesamtzahl der Benutzerkennzeichnungen, denen von Moderatoren widersprochen wurde.agreed_flags: Die Gesamtzahl der Benutzerkennzeichnungen, denen von Moderatoren zugestimmt wurde.ignored_flags: Die Gesamtzahl der von Moderatoren ignorierten Benutzerkennzeichnungen.score: Eine berechnete Punktzahl, die die Leistung des Benutzers bei der Kennzeichnung darstellt.
- FROM-Klausel: Die Abfrage verknüpft die
users-Tabelle mit derreviewable_scores-Tabelle über dieuser_id, um Kennzeichnungsinformationen zu jedem Benutzer zu erhalten. - WHERE-Klausel: Die Abfrage filtert die Daten, um nur die Einträge für Benutzer mit einer
idgrößer als 0 und bei denen dascreated_at-Datum der Überprüfbarkeitsbewertungen innerhalb des angegebenen Datumsbereichs liegt, einzuschließen. - GROUP BY-Klausel: Die Abfrage gruppiert die Ergebnisse nach
user_id,username,uploaded_avatar_idundsilenced_till, um Kennzeichnungsdaten für jeden Benutzer zu aggregieren. - ORDER BY-Klausel: Die Abfrage sortiert die Ergebnisse nach der berechneten
scorein absteigender Reihenfolge, um die Benutzer mit der höchsten Kennzeichnungsleistung zuerst anzuzeigen. - LIMIT-Klausel: Die Abfrage beschränkt die Ergebnisse auf die Top 100 Benutzer basierend auf der berechneten Punktzahl.
Beispielergebnisse
| user | username | silenced | disagreed_flags | agreed_flags | ignored_flags | score |
|---|---|---|---|---|---|---|
| user_1_id | user_1 | f | 0.0 | 10.0 | 3.0 | 100.0 |
| user_2_id | user_2 | f | 0.0 | 6.0 | 3.0 | 36.0 |
| user_3_id | user_3 | f | 0.0 | 4.0 | 0.0 | 16.0 |
| … | … | … | … | … | … | … |