Значки за 10 и 100 правок в вики по различным темам

Продолжаем обсуждение из темы Запросы по умолчанию для значков:

Я пытаюсь создать серебряный значок за 10 правок в вики (по всем сообщениям) и золотой значок за 100 правок в вики, однако ни я, ни Помощник форума не можем добиться успеха.

Есть какие-либо предложения?

Я экспериментировал с таким форматом, чтобы избежать проблемы с функциями MIN/MAX, когда неверная дата granted_at присваивается при выдаче значка «на ходу» (они обычно работают лучше, когда пользователи ещё не выполнили критерии до появления значка).

Возможно, что-то вроде этого:

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

(Я не включил обычное условие «не включать удалённые темы или посты», так как правки старых вики-страниц, вероятно, всё равно должны учитываться. Я также не добавил механизм заполнения пропущенных данных, но думаю, что этот вариант лучше обновлять ежедневно с помощью триггера.)

Круто! Это про 100 правок в постах вики или про редактирование 100 постов вики?

Это 100 правок в статьях вики, поэтому редактирование одной статьи сто раз (или ста статей по одному разу) даст значок.

После небольшого размышления (и небольшого обсуждения с Бертом :slight_smile:) я считаю, что ROW_NUMBER будет лучшим выбором для этого случая. Я отредактирую запрос выше. :+1: