Acabo de etiquetar esto como sql-triggered-badge, pero pensé en preguntar si buscas uno automático o no. Supongo que quizás no tengas una gran cantidad de moderadores y podrías otorgar esta insignia manualmente basándote en una consulta del explorador de datos.
Creo que una versión simplificada de la anterior podría ser:
-- [params]
-- int :years
WITH time_in_mod_group AS (
SELECT
user_id,
(CURRENT_DATE - created_at::date) AS days_as_mod
FROM group_users
WHERE group_id = 2 -- group id of the 'moderator' group
AND user_id > 0 -- exclude system users and bots
)
SELECT
user_id,
days_as_mod
FROM time_in_mod_group
WHERE days_as_mod > (365 * :years)
Esta funcionaría como una consulta del explorador de datos en lugar de un conjunto de insignias SQL, y puede seleccionar una lista de usuarios que cumplen los criterios para que puedas otorgarles manualmente la insignia.
Hay una advertencia: si abandonaron el grupo de moderadores en algún momento y se volvieron a unir, solo contaría la última inclusión. Creo que sería posible usar la tabla user_histories para solucionar eso, pero si es una excepción, es probable que sea más fácil tenerla en cuenta manualmente también.