Как можно получить топ-10 постов по количеству лайков или просмотров за вчера? Кажется, в базе данных хранятся только накопленные значения. Спасибо.
Привет ![]()
У вас на сайте включён плагин Discourse Data Explorer?
Это не включено. Не нужно ли включить это, чтобы записывать более подробные данные?
Включите эту опцию, и вы сможете выполнять специфические запросы, ограниченные вчерашним днём.
Запрос для получения 10 постов с наибольшим количеством лайков за вчера
-- Top 10 Posts by Likes from Yesterday
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 -- Like action type
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 постов с наибольшим количеством просмотров за вчера
-- Top 10 Topics by Views from Yesterday
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-бота!)