【问题标题】:How to sum a grouped column in AREL如何对 AREL 中的分组列求和
【发布时间】:2011-05-12 01:15:24
【问题描述】:

在 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)

这是Model.group(:label).map(&:value).sum 使用 ruby​​ 求和,我如何在 SQL/AREL 中执行此操作

【问题讨论】:

    标签: sql ruby-on-rails-3 arel


    【解决方案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 
    

    【讨论】:

    • 如何访问value_sum?当我尝试做relation.first.value_sum 时,我得到NoMethodError: undefined methodvalue_sum
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2018-01-25
    • 2022-11-18
    • 1970-01-01
    相关资源
    最近更新 更多