제가 파악한 바로는, Discourse는 멘션을 명시적으로 추적하지는 않지만, 주제에 추가된 링크는 추적합니다. 게시물 내의 그룹 멘션은 topic_links 테이블의 url 값으로 다음 형식으로 기록됩니다: "/groups/<group_name>". 다음 쿼리는 찾으시는 것과 거의 일치하는 결과를 제공해야 합니다. start_date와 end_date 매개변수에 값을 입력해야 합니다. 해당 날짜는 yyyy-mm-dd 형식이어야 합니다. 예를 들어, 지난 1년의 데이터를 가져오려면 start_date에 2020-01-01을, end_date에 2020-12-31을 입력하십시오:
--[params]
-- date :start_date
-- date :end_date
WITH group_mentions AS (
SELECT
split_part(url, '/', 3) AS group_name
FROM topic_links tl
JOIN topics t ON t.id = tl.topic_id
WHERE internal = true
AND url LIKE '/groups/%'
AND t.deleted_at IS NULL
AND t.archetype = 'regular'
AND tl.created_at::date BETWEEN :start_date AND :end_date
)
SELECT
gm.group_name,
COUNT(gm.group_name) AS mention_count
FROM group_mentions gm
JOIN groups g ON g.name = gm.group_name
WHERE g.created_at::date <= :start_date
GROUP BY gm.group_name
ORDER BY mention_count DESC
이 쿼리는 일반 게시물에 추가된 멘션만 반환합니다(다만, 속삭임(whisper) 게시물에 추가된 멘션은 포함됩니다). 개인 메시지에 추가된 멘션도 결과에 포함되기를 원하시면 첫 번째 쿼리에서 AND t.archetype = 'regular' 줄을 제거하십시오.
이 결과가 찾으시는 유형의 데이터가 아니라면 알려주세요. 그 전에 다른 사람이 답변하지 않는다면 내일 나머지 질문들을 처리해 보겠습니다.