여러분, 안녕하세요! 근황은 어떠신가요?
저는 커뮤니티에서 SQL 쿼리를 작성하는 데 아직 익숙하지 않아서 한 가지 문제에 막혀 있습니다.
커뮤니티에서 특정 그룹이 생성한 스레드와 관련된 데이터를 가져오는 쿼리를 작성해야 합니다. 현재까지 작성한 내용은 다음과 같습니다:
-- [params]
-- int :months_ago = 1
WITH query_period as (
SELECT
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' as period_start,
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' + INTERVAL '1 month' - INTERVAL '1 second' as period_end
)
SELECT
t.id as topic_id,
t.title,
u.username,
t.views,
t.posts_count
FROM topics t
RIGHT JOIN query_period qp
ON t.created_at >= qp.period_start
AND t.created_at <= qp.period_end
INNER JOIN users as u
ON t.user_id = u.id
WHERE t.user_id > 0
and u.username in ('maria.narvaez', 'Joao.Caique', 'camila.ochoa',
'Caroline.Freitas','dante.chacon', 'maria.novaes', 'FernandaVivacqua',
'gabriea.marta', 'IgorMello', 'Jay', 'joaostoky', 'Julio.Torquato',
'Luis_Quesada', 'maiara.zotelli', 'natalia.bispo', 'rbussola',
'talissa','tfgouveia', 'Victor.Ferreira')
필요한 데이터의 대부분을 가져왔습니다. 남은 데이터는 이 스레드에서 받은 좋아요(likes_received)의 수입니다. 하지만 특정 한 그룹의 좋아요는 제외하고 모든 좋아요를 집계해야 합니다.
어떻게 하면 될까요? 검색해 보니 CTE에 관한 해결책들을 찾았지만, 올바르게 사용하는 방법을 잘 모르겠습니다.
도움이나 힌트를 주시면 감사하겠습니다.
미리 감사합니다.