수락된 솔루션 쿼리

안녕하세요, 이번 달에 승인된 솔루션을 확인하기 위해 아래 쿼리를 사용하고 있습니다. 하지만 3월 이후의 데이터가 보이지 않습니다. 또한, 이 숫자들은 승인된 솔루션 보고서에 표시된 내용과 일치하지 않습니다. 제가 무엇을 잘못하고 있는지 조언을 구할 수 있을까요?

SELECT DISTINCT 
YEAR(p.created_at), MONTH(p.created_at), 
count(distinct(p.topic_id))
    FROM posts p
    JOIN posts_custom_fields pcf ON pcf.post_id = p.id
    WHERE (pcf.name = 'is_accepted_answer' AND pcf.value = 'true') AND YEAR(p.created_at) = 2025
    GROUP BY 1,2

Shreyas님,

공유해 주신 쿼리를 살펴보니, 3월 이후의 데이터가 표시되지 않고 쿼리의 숫자가 수락된 솔루션 대시보드 보고서와 일치하지 않는 이유는 posts_custom_fields 데이터베이스 테이블을 사용하고 있기 때문입니다. 그러나 Discourse Solved 플러그인은 discourse_solved_solved_topics 테이블을 사용하여 수락된 솔루션을 추적합니다.

2025년 3월 기준으로, Discourse Solved 플러그인이 Discourse 사이트에서 해결된 토픽을 결정하기 위해 discourse_solved_solved_topics 데이터베이스 테이블을 사용하도록 업데이트하는 변경 사항이 있었습니다. 이제 이 테이블이 모든 솔루션 데이터의 단일 정보 원본(source of truth)이 되었습니다.

수락된 솔루션 보고서와 일치하고 2025년 데이터를 표시하도록 수정된 쿼리 버전은 다음과 같습니다.

2025년 월별 수락된 솔루션

SELECT 
    EXTRACT(YEAR FROM p.created_at) AS year,
    EXTRACT(MONTH FROM p.created_at) AS month,
    TO_CHAR(p.created_at, 'Month') AS month_name,
    COUNT(DISTINCT dst.topic_id) AS solutions_count
FROM discourse_solved_solved_topics dst
JOIN posts p ON p.id = dst.answer_post_id
WHERE p.created_at >= '2025-01-01' AND p.created_at < '2026-01-01'
GROUP BY 1, 2, 3
ORDER BY year, month

이 쿼리의 결과에는 다음이 포함됩니다:

  • 수락된 솔루션이 있는 2025년의 모든 달 (3월만 포함되지 않음)
  • 동일한 기본 데이터베이스 테이블을 사용하기 때문에 수락된 솔루션 보고서와 일치하는 숫자
  • PostgreSQL의 네이티브 함수를 사용한 날짜 형식화

찾고 계신 데이터를 찾는 데 도움이 되기를 바랍니다! :slightly_smiling_face:

@SaraDev님, 감사합니다! 정말 도움이 됩니다. Snowflake에서 discourse_solved_solved_topics를 쿼리할 수 있게 되면 해당 쿼리의 출력을 확인해 보겠습니다.