gpt4 book ai didi

sql - Postgresql查询获取创建账号24小时内拥有少数属性的用户

转载 作者:行者123 更新时间:2023-11-29 14:34:38 28 4
gpt4 key购买 nike

我正在尝试为 Rails 应用程序编写 SQL 查询,以获取在创建帐户后 24 小时内关注了三个用户、关注了三个标签并留下了备注的用户数量。

模型结构为:

  • 用户模型有一个 ID 和 created_at 列,一个用户 has_many 关注和评论。
  • Follows 模型有一个 follower_id 匹配用户的 id 和一个 follower_type,它是 "User""Tag ",以及一个 created_at
  • 评论模型有一个 user_id 匹配用户的 id 和一个 created_at

由于我的 SQL 技能欠佳,所以我还没有走多远。最近的(还是很远)我得到的是这样的:

 select count(*)
from users
where created_at >=
(select follows.created_at
from follows
where follows.follower_id = users.id);

最佳答案

这是一个可能的 ActiveRecord 解决方案。请注意,我只在 IRB 中测试过此变体,您的模型可能与我在这里的假设略有不同。另外,我不是 SQL 专家,所以这可能效率不高。

User
.joins("LEFT OUTER JOIN follows as fu on fu.follower_id = users.id AND fu.created_at < (users.created_at + interval '1 day') AND fu.follower_type = 'User'")
.joins("LEFT OUTER JOIN follows as ft on ft.follower_id = users.id AND ft.created_at < (users.created_at + interval '1 day') AND ft.follower_type = 'Tag'")
.joins("LEFT OUTER JOIN comments as c on c.user_id = users.id AND c.created_at < (users.created_at + interval '1 day')")
.group("users.id")
.having("COUNT(distinct fu.id)>=3 AND COUNT(distinct ft.id)>=3 AND COUNT(distinct c.id)>=1")

您可以查看控制台输出以将其转换为原始 SQL。

关于sql - Postgresql查询获取创建账号24小时内拥有少数属性的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47041573/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com