在指定时间段内发布首帖的用户

大家好。我是一名 SQL 新手。我希望能够获取在指定时间段内首次发帖的用户名单。

请注意,这里指的是他们首次发帖,而非首次注册。我们的使用场景与大多数情况不同,因此“发帖”这一行为至关重要。

有人有类似的方案吗?感谢任何帮助!

谢谢!

1 个赞

这应该能解决问题 @ThunderThighs。将其添加到您的数据探索器中,填写开始日期和结束日期,即可开始操作。日期必须符合支持的格式之一,例如 YYYY-MM-DD

在此期间发布首帖的用户

-- [params]
-- date :start_date
-- date :end_date

SELECT username
FROM users u
JOIN user_stats us
ON u.id = us.user_id
WHERE us.first_post_created_at BETWEEN :start_date::date AND :end_date::date
13 个赞

这非常有用。

您打算如何扩展它来实际检索这些帖子?

这样的方案能满足您的需求吗?

-- [params]
-- date :start_date
-- date :end_date

SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND :end_date::date
5 个赞

太完美了,非常感谢。

我能问一个 SQL 新手问题吗?第二行和第三行的 uus 是做什么的?它们是否有点像 AS 的作用,使得 users 现在可以用前缀 u 来引用,而 user_stats 可以用前缀 us 来引用?

2 个赞

没问题!

没错。uus 是表别名。您可以在这里了解更多相关信息:http://www.postgresqltutorial.com/postgresql-alias/

这本质上是一种简写方式。它允许您使用 us.user_id 而不是 user_stats.user_id 来引用 user_stats 表中的 user_id 列。在处理长表名和大型查询时,这种方式特别有帮助。

7 个赞