gpt4 book ai didi

sql - 使用 activerecord/pgsql 计算分组平均值

转载 作者:行者123 更新时间:2023-11-29 13:52:54 26 4
gpt4 key购买 nike

我有一个简单的评论表:

id    post_id
=======================
1 'a11'
2 'a11'
3 'b22'
4 'b22'
5 'b22'

我正在计算每个帖子的平均评论数:

comment_counts = Comment.group(:post_id).count.values
avg = comment_counts.sum / comment_counts.size.to_f
# => 2.5

我宁愿让 DB 处理计算。我怎样才能仅使用 activerecord/sql 来实现这一目标?

最佳答案

我想不出一种非常类似于 ActiveRecord 的方式来执行此操作,但可以提供以下内容:

Comment(:post_id).select("avg(count(*)) over () avg").take.avg

...返回一个 BigDecimal,或者可能更有效:

ActiveRecord::Base.connection.execute("select avg(c_star) from (select count(*) c_star from comments group by post_id) t").first["avg"].to_d

不过,我突然想到,这并没有考虑没有收到评论的帖子。

关于sql - 使用 activerecord/pgsql 计算分组平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511604/

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