SQL 관련 도움 요청 - 자동 닫기/결과 반복/주간 필터

안녕하세요. 아래에 쿼리를 작성했는데, 주제(topic), 카테고리, 해당 주제의 투표 수, 폐쇄 여부, 생성 시각, 생성한 사용자를 표시합니다. 추가 정보가 필요하시면 편하게 말씀해 주세요.

SQL에 익숙하지 않아 몇 가지 문제와 질문이 있습니다. 도움이나 조언을 구하고 싶습니다.

  1. 이 쿼리를 실행하면 동일한 주제가 수백 번 반복해서 표시됩니다. 어떻게 수정할 수 있을까요?

  2. 주제가 자동 폐쇄되는 시점을 가져와서 표시할 방법이 있을까요?

  3. 최근 1주일 이내의 주제만 표시되도록 하고 싶습니다. 그런데 추가한 date_trunc 때문에 1주일 전보다 약간 더 오래된 항목들이 일부 표시됩니다. 왜 그런 걸까요?

SELECT
    t.id as topic_id,
    t.category_id,
    dvc.votes_count,
    t.closed,
    t.created_at,
    t.user_id
FROM topics t, discourse_voting_topic_vote_count dvc
WHERE t.closed = true
    AND t.category_id = 20
    AND dvc.votes_count >= 1
    AND t.created_at <= date_trunc('week', current_date)::date
    AND t.created_at >= date_trunc('week', current_date)::date - 7

WHERE 줄 뒤에 다음을 추가해 보세요.

 AND t.id = dvc.topic_id

테스트는 하지 않았지만, 이것이 큰 문제라고 생각합니다(“동일한 주제” 문제를 해결해 줍니다).

대단해요! 제이, 잘 작동합니다 :smiley:

다른 문제들은 어떻게 해결해야 할지 혹시 아시나요?

(3)에 대해서는 시간대 문제이거나, 스크립트를 실행한 시점 기준으로 직전 또는 직후 자정(0시)을 원하는 것 때문일 것으로 추측됩니다. (그 중 어느 쪽이든 바로 어떻게 수정해야 할지 정확히 알지 못합니다.)

도움이 될지는 모르겠지만 아래를 시도해 볼 수 있습니다.

폐장 시각을 가져오려면 SELECT 부분에 추가할 항목이 필요합니다(사용 가능한 필드에서 유추할 수 있으며), FROM은 다음과 같이 변경해야 합니다.

   FROM topics t, discourse_voting_topic_vote_count dvc, topic_timers tt

그리고 WHERE 뒤에 아래 내용을 추가하세요.

    AND tt.topic_id=t.id

(앞서 추가했던 것과 동일한 방식입니다.)

제이, 다시 한번 고마워요. 정말 큰 도움이 됐어요 (:

와! 그게 작동했어? 정말 멋지다. 도움이 되길 바라.