用户过去7天按电子邮件域名的帖子

我认为它实际上会因为群组加入而给出虚高的数字(此外,每个人都属于一个自动群组以获得他们的信任级别,所以这里有点不一致)。我认为我们可以去掉这些,也许再做一些调整来聚焦主题、帖子和私信。

让我试试看。


也许是这样的:

-- [params]
-- string :interval = 7 days


SELECT
  split_part(ue.email, '@', 2) AS email_domain, -- 提取电子邮件的域名部分
  COUNT(p.id) AS "总帖子数",
  COUNT(p.id) FILTER (WHERE p.post_number = 1 AND t.archetype = 'regular') AS "主题数",
  COUNT(p.id) FILTER (WHERE p.post_number > 1 AND t.archetype = 'regular') AS "帖子数",
  COUNT(p.id) FILTER (WHERE t.archetype = 'private_message') AS "私信帖子数"
FROM posts p
  JOIN user_emails ue ON p.user_id = ue.user_id AND ue.primary = TRUE -- 确保我们使用的是主电子邮件
  JOIN topics t ON t.id = p.topic_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL :interval -- 根据参数过滤最近 x 时间内的帖子
  AND p.user_id > 0 -- 排除系统用户(系统和机器人)
  AND p.deleted_at ISNULL
  AND t.deleted_at ISNULL
  AND p.post_type <> 3
GROUP BY email_domain
ORDER BY "总帖子数" DESC -- 按帖子总数降序排序结果
2 个赞