Ich versuche, ein Silberabzeichen für 10 Wiki-Bearbeitungen (über alle Beiträge hinweg) und ein Goldabzeichen für 100 Wiki-Bearbeitungen zu erstellen – aber weder ich noch der Forum-Helfer kommen weiter.
Ich habe mit diesem Format experimentiert, um das MIN/MAX-Problem zu vermeiden, bei dem das falsche granted_at-Datum zugewiesen wird, wenn ein Abzeichen ‘mitten im Ablauf’ übernommen wird (sie funktionieren tendenziell besser, wenn die Leute die Kriterien noch nicht erfüllt haben, bevor das Abzeichen eingeführt wird).
Also vielleicht so etwas wie:
SELECT
user_id,
created_at granted_at
FROM (
SELECT
pr.user_id,
pr.created_at,
ROW_NUMBER() OVER (PARTITION BY pr.user_id ORDER BY pr.created_at) as row_number
FROM post_revisions pr
INNER JOIN badge_posts p ON p.id = pr.post_id
WHERE p.wiki = TRUE
AND pr.hidden = FALSE
AND pr.user_id > 0
) AS revisions
WHERE row_number = 100
(Ich habe die üblichen ‘gelöschte Themen oder Beiträge nicht einschließen’ nicht berücksichtigt, da Bearbeitungen alter Wikis wahrscheinlich trotzdem zählen sollten. Ich habe auch keine Nachfüllung hinzugefügt, aber ich denke, diese hier wäre ‘täglich aktualisieren’ als Auslöser?)
Nach etwas mehr Überlegung (und einem kurzen Gespräch mit Bert ) denke ich, dass ROW_NUMBER hier die bessere Wahl wäre. Ich werde die obige Abfrage bearbeiten.