一部の「いいね!」が削除されてテストが狂ってしまったため、混乱がありましたが、OPにあるものに条件を満たすように修正したバージョンだと思います。![]()
SELECT p.user_id, MAX(p.created_at) granted_at
FROM badge_posts p
WHERE (SELECT COUNT(*)
FROM post_actions pa
WHERE pa.post_id = p.id
AND post_action_type_id = 2
AND deleted_at IS NULL
AND pa.user_id IN (SELECT gu.user_id FROM group_users gu WHERE gu.group_id = 3)
) >= 5
AND p.user_id >= 0
GROUP BY p.user_id
HAVING COUNT(*) >= 10
これは badge_posts ビューから機能するため、公開カテゴリからの投稿のみをカウントします。これは、フォーラム/カテゴリの設定によっては考慮する必要があるかもしれません。また、granted_at に CURRENT_TIMESTAMP を使用することも別の選択肢ですが、おそらく好みの問題です。
