sql-triggered-badge としてタグ付けしましたが、自動バッジを探しているのかどうか確認しておこうと思いました。おそらく多くのモデレーターはおらず、データエクスプローラーのクエリに基づいて手動でバッジを付与できるのではないでしょうか。
上記を簡略化したバージョンは次のようになると考えられます。
-- [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 -- 'moderator' グループのグループID
AND user_id > 0 -- システムユーザーとボットを除く
)
SELECT
user_id,
days_as_mod
FROM time_in_mod_group
WHERE days_as_mod > (365 * :years)
これは、SQLバッジのセットではなく、データエクスプローラーのクエリとして機能し、基準に適合するユーザーのリストを抽出して、手動でバッジを付与することができます。
ただし、モデレーターグループを一度離れてから再参加した場合、最新の参加のみがカウントされるという注意点があります。user_histories テーブルを使用してこれを回避できると思いますが、例外的なケースであれば、手動で対応する方が簡単でしょう。