将表子查询转换为等效的活动记录

时间:2013-03-04 17:20:44

标签: ruby-on-rails-3 activerecord

我正在尝试在Rails3活动记录中复制以下SQL,到目前为止我找不到任何内容。所以,任何帮助将不胜感激。

SELECT AVG(DAILY_AVG) FROM (
    SELECT user_code, (COUNT(actioned_at) / 200) as DAILY_AVG
    FROM transactions
    GROUP BY user_code
) TMP

我目前正在使用... connection.select_value(sql)直接执行此操作,但我真的想找出执行此操作的活动记录方式。

1 个答案:

答案 0 :(得分:0)

内部查询可以写成:

Transaction.group(:user_code).select("COUNT(actioned_at) / 200 AS daily_avg")

然后将其嵌套以获得我们可以做到的平均值:

Transaction.select("AVG(daily_avg)").from(Transaction.group(:user_code).select("COUNT(actioned_at) / 200 AS daily_avg"))[0].avg.to_f