带有正确时间戳的 User_stats

嘿,

我有一个 Discourse SQL 数据库。我需要查找特定时间戳的用户统计数据。
例如,我需要找出用户在某个时间段内发布了多少帖子?
如果我从 user_stats 表中提取数据,它会给出从用户加入论坛至今的总数,但我需要特定时间段的数据。
有什么建议吗?

您需要使用新的数据库查询自行生成统计信息。例如,要获取过去 30 天的帖子数量:

SELECT count(*) from posts 
WHERE user_id=1
AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

本主题包含许多示例查询,可作为起点:

2 个赞

谢谢 @david :slight_smile:

1 个赞

但如果我想指定具体时间而不是天数,比如查找 2020-2-2 00:00:00 到 2020-3-1 00:00:00 之间的数据,该怎么办?

如果我执行 SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

我得到了一个数字,但查看我的统计数据时,这个数字比实际值要少。
如果你看到这种情况,我从数据库中得到的是 430,但实际应该是 308?
OnPaste.20200302-164643

界面中显示的计数仅针对公开且未删除的帖子。数据库中的计数包含所有帖子,包括已删除的帖子、私信以及私密分类中的内容。

但是,如果我想获取某个时间段内的 UI 统计数据呢?

您需要应用类似的过滤器。类似这样:

SELECT count(*) FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.user_id=23968
AND p.deleted_at IS NULL
AND NOT COALESCE(p.hidden, 't')
AND p.post_type = 1
AND t.deleted_at IS NULL
AND COALESCE(t.visible, 't')
AND t.archetype <> 'private_message'
AND p.user_id > 0
AND p.post_number > 1
3 个赞