Estoy intentando crear una insignia de plata por 10 ediciones de wiki (en todas las publicaciones) y una insignia de oro por 100 ediciones de wiki, pero ni yo ni el Ayudante del Foro estamos logrando nada.
He estado jugando con este tipo de formato para evitar el problema de MIN/MAX de asignar la fecha granted_at incorrecta al incorporar una insignia ‘a mitad de camino’ (tienden a funcionar mejor cuando las personas aún no han cumplido los criterios antes de que se introduzca la insignia).
Así que, posiblemente algo como esto:
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
(No he incluido lo habitual de ‘no incluir temas o publicaciones eliminadas’, ya que las ediciones de wikis antiguas probablemente deberían seguir contando. Tampoco he añadido el relleno, pero creo que este sería ‘actualizar diariamente’ como disparador).
Después de un poco de reflexión adicional (y una pequeña charla con Bert ), creo que ROW_NUMBER sería la mejor opción para este. Editaré la consulta anterior.