大家好。我是一名 SQL 新手。我希望能够获取在指定时间段内首次发帖的用户名单。
请注意,这里指的是他们首次发帖,而非首次注册。我们的使用场景与大多数情况不同,因此“发帖”这一行为至关重要。
有人有类似的方案吗?感谢任何帮助!
谢谢!
大家好。我是一名 SQL 新手。我希望能够获取在指定时间段内首次发帖的用户名单。
请注意,这里指的是他们首次发帖,而非首次注册。我们的使用场景与大多数情况不同,因此“发帖”这一行为至关重要。
有人有类似的方案吗?感谢任何帮助!
谢谢!
这应该能解决问题 @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
这非常有用。
您打算如何扩展它来实际检索这些帖子?
这样的方案能满足您的需求吗?
-- [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
太完美了,非常感谢。
我能问一个 SQL 新手问题吗?第二行和第三行的 u 和 us 是做什么的?它们是否有点像 AS 的作用,使得 users 现在可以用前缀 u 来引用,而 user_stats 可以用前缀 us 来引用?
没问题!
没错。u 和 us 是表别名。您可以在这里了解更多相关信息:http://www.postgresqltutorial.com/postgresql-alias/
这本质上是一种简写方式。它允许您使用 us.user_id 而不是 user_stats.user_id 来引用 user_stats 表中的 user_id 列。在处理长表名和大型查询时,这种方式特别有帮助。