어제 좋아요 수나 조회수가 가장 많았던 상위 10개 게시글을 가져오고 싶은데, 어떻게 하면 될까요? 데이터베이스에는 누적 값만 저장되어 있는 것 같습니다. 감사합니다.
안녕하세요 ![]()
사이트에서 Discourse Data Explorer 플러그인이 활성화되어 있나요?
아직 활성화되어 있지 않은 것 같습니다. 더 자세한 데이터를 기록하려면 활성화가 필요한가요?
이를 활성화하면, 지난 하루(어제)에 한정된 특정 쿼리를 실행할 수 있습니다.
어제 ‘좋아요’ 수 기준 상위 10개 게시물 조회
-- 어제 '좋아요' 수 기준 상위 10개 게시물
WITH yesterday_actions AS (
SELECT
post_id,
COUNT(*) AS like_count
FROM post_actions
WHERE
created_at::date = CURRENT_DATE - 1
AND post_action_type_id = 2 -- '좋아요' 액션 유형
GROUP BY post_id
)
SELECT
p.id AS post_id,
t.id AS topic_id,
t.title AS topic_title,
p.post_number,
u.username AS author,
ya.like_count AS likes_yesterday
FROM yesterday_actions ya
JOIN posts p ON p.id = ya.post_id
JOIN topics t ON t.id = p.topic_id
JOIN users u ON u.id = p.user_id
ORDER BY likes_yesterday DESC
LIMIT 10
어제 조회수 기준 상위 10개 게시물 조회
-- 어제 조회수 기준 상위 10개 토픽
WITH yesterday_topic_views AS (
SELECT
topic_id,
COUNT(*) AS view_count
FROM topic_views
WHERE viewed_at::date = CURRENT_DATE - 1
GROUP BY topic_id
)
SELECT
t.id AS topic_id,
t.title,
u.username AS creator,
ytv.view_count AS views_yesterday
FROM yesterday_topic_views ytv
JOIN topics t ON t.id = ytv.topic_id
JOIN users u ON u.id = t.user_id
ORDER BY views_yesterday DESC
LIMIT 10
(AI 봇으로 생성됨!)