특정 그룹을 제외하고 likes_received를 계산하는 방법

여러분, 안녕하세요! 근황은 어떠신가요?

저는 커뮤니티에서 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에 관한 해결책들을 찾았지만, 올바르게 사용하는 방법을 잘 모르겠습니다.

도움이나 힌트를 주시면 감사하겠습니다.
미리 감사합니다.

1개의 좋아요