해답 생성 횟수 배지는 어떻게 되나요?

안녕하세요, 특정 수의 솔루션(해결)에 대해 배지를 수여하는 템플릿이나 표준 쿼리가 있는지 궁금해서 질문드립니다. 예를 들어, 약 10개의 게시물/질문에 답변을 달고 그 모든 것이 솔루션으로 표시되면, 이에 대한 배지를 받게 되고, 20, 30, 40개의 솔루션이 표시될 때마다 각각 해당하는 배지를 받는 식입니다.

표준 쿼리를 찾아보려고 노력했지만, 그런 것이 없는 것 같습니다. 다만 여기에는 몇 가지 사용자 정의 쿼리가 작성되어 있는 것을 볼 수 있습니다.

감사합니다,

플러그인과 함께 제공되는 몇 가지가 있으며, /admin/badges 페이지에서 활성화할 수 있습니다(HelpDesk 및 TechSupport). 수정하고 싶다면 아래 쿼리를 참고하세요:

SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.post_number > 1 AND
    p.id IN (
      SELECT post_id FROM (
       SELECT pc.post_id, row_number()
       OVER (PARTITION BY p1.user_id ORDER BY pc.created_at) as rnum
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE name = 'is_accepted_answer' AND
                    p1.user_id <> t1.user_id AND
        (
          :backfill OR
           p1.user_id IN (
                   select user_id from posts where p1.id IN (:post_ids)
           )
       )
) X  WHERE rnum = 1)

SELECT id user_id, current_timestamp granted_at
FROM users
WHERE id  IN (
       SELECT p1.user_id
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE p1.user_id <> t1.user_id AND
                    name = 'is_accepted_answer' AND
            p1.user_id IN (
                   SELECT user_id
                   FROM posts
                   WHERE :backfill OR  p1.id IN (:post_ids)
            )
        GROUP BY p1.user_id
        HAVING COUNT(*) > 9
)

감사합니다, @JammyDodger,

조금 더 도움이 필요할 것 같습니다. 솔루션에 사용되는 선택자/필드를 식별하는 문서가 있으신가요?

Screen Shot 2022-06-06 at 11.05.29 AM

걱정 마세요. :slightly_smiling_face: 데이터 탐색기는 쿼리를 커스텀 SQL 배지로 추가하기 전에 테스트하는 데 정말 좋습니다(다만 데이터 탐색기의 쿼리는 backfill 부분이 필요하지 않아요).

다만, 위 두 번째 쿼리에는 이미 필요한 모든 정보가 포함된 것 같습니다. 해결책은 post_cutom_field 테이블의 name 컬럼에 is_accepted_answer로 저장됩니다. 그리고 그 두 번째 쿼리는 10개의 해결책(HAVING COUNT(*) > 9)에 대해 TechSupport 배지를 부여하므로, OP가 원했던 1위, 2위, 3위 등에게 배지를 부여하려면 해당 쿼리를 복사해서 맨 아래 숫자를 19, 29, 39 등으로 변경하면 됩니다.