Estou tentando criar um emblema de prata para 10 edições de wiki (em todas as postagens) e um emblema de ouro para 100 edições de wiki - no entanto, nem eu nem o Auxiliar do Fórum estamos chegando a lugar algum.
Tenho brincado com este tipo de formato para evitar o problema de MIN/MAX de atribuir a data granted_at incorreta ao trazer um distintivo ‘no meio do fluxo’ (eles tendem a funcionar melhor quando as pessoas ainda não atingiram os critérios antes que o distintivo seja introduzido).
Então, possivelmente algo como isto:
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
(Não incluí o ‘não incluir tópicos ou posts excluídos’ usual, pois edições em wikis antigas provavelmente ainda devem contar. Não adicionei o backfill também, mas acho que este seria ‘atualizar diariamente’ como o gatilho?)
Depois de pensar um pouco mais (e uma pequena conversa com o Bert ), acho que ROW_NUMBER seria a melhor escolha para este. Vou editar a consulta acima.