在Rails 3 / AREL中
Model.group(:label).sum(:value)
会做
SELECT sum(value), label from model_table group by label
我想找到AREL的做法
SELECT sum(value) from (select value, label from model_table group by label)
使用ruby求Model.group(:label).map(&:value).sum
求和,如何在SQL / AREL中执行此操作
答案 0 :(得分:1)
不确定这是否有意义。您的核心SQL无效:
SELECT value, label FROM model_table GROUP BY label
如果您的选择中没有聚合函数(例如SUM),则不能拥有GROUP BY。我想你真正想要的是:
SELECT label, SUM(value) from model_table GROUP BY label
我是对的吗?要在AREL中执行此操作,请尝试以下操作:
relation = Model.select(:label).
select(Model.arel_table[:value].sum.as("value_sum")).
group(:label)
relation.to_sql
# => SELECT label, SUM("model_table"."impressions") AS value_sum FROM "model_table" GROUP BY label