Badge for posts with Likes from a specific group

もう少しで達成できそうだったのに。 :upside_down_face: よくやりましたね。 :clap:

CTEがより効率的かどうかを調べているのですが、頭がパンクしそうです :melting_face:


WITH staff_liked AS (

       SELECT COUNT(*), pa.post_id
       FROM post_actions pa
       JOIN group_users gu ON gu.user_id = pa.user_id
       WHERE post_action_type_id = 2
       AND gu.group_id = 3
       AND deleted_at IS NULL
       GROUP BY pa.post_id
       HAVING COUNT(*) >= 5

)

SELECT p.user_id, MAX(p.created_at) granted_at
FROM badge_posts p
WHERE p.id IN (SELECT post_id FROM staff_liked)
   AND p.user_id >= 0
GROUP BY p.user_id
HAVING COUNT(*) >= 10

うーん。それは、例えば、私たちのTL0ロックされたカテゴリをカウントしないということですか?

はい、badge_post ビューはクエリを単純化するために一部のものを事前にフィルタリングします。代わりに posts テーブルを使用するように調整できます。これによりすべてのカテゴリが含まれますが、削除された投稿や削除されたトピックなどを除外するために 1 行か 2 行追加する必要があるかもしれません(ただし、シンプルに保ちたい場合は、バッジを獲得した後に投稿が削除された場合でも、そのまま保持させるだけで必要ないかもしれません)。