0

如何在 Rails 中执行此操作?:

select avg(cnt)
from
(
    select
        count(*) as cnt
    from
        sngs s
        inner join clbs c on c.id = s.clb_id
    where
        c.user_id = 35
    group by
        date(s.record_date)
) sc

线

current_user.sngs.joins(:clb).average("count(*)", group: "date(record_date)")

给出一个错误:

PG::Error: 错误:聚合函数调用不能嵌套第 1 行:SELECT AVG(count(*)) ......

4

1 回答 1

1

没有测试它,但它可能看起来像这样:

Sng.joins(:clbs).where("clbs.user_id = 35").group(:record_date).average

您应该查看ActiveRecordRails Guides 上的查询界面。http://guides.rubyonrails.org/active_record_querying.html
这个链接解释了许多你应该使用的查询方法。

编辑

一起看看count, average, having,group和 chaning 所有这些。

于 2012-08-13T14:11:43.190 回答