【发布时间】:2016-09-16 12:15:20
【问题描述】:
我有以下有效的查询
@engagements = Engagement.includes(:participation).where(influencer_authorization_id: current_influencer.id).group_by { |p| p.status }
我正在尝试使用数据库函数而不是 Ruby/Rails 函数进行分组,以下是我的代码
engagements = Engagement.where(influencer_authorization_id: current_influencer.id).group("status")
但我收到以下错误
错误:列“engagements.id”必须出现在 GROUP BY 子句中或用于聚合函数中 第 1 行:选择“参与度”。* 从“参与度”中选择“参与度... ^
更新
我尝试了以下操作,但仍然无法正常工作
engagements = Engagement.select("engagements.*").where(influencer_authorization_id: current_influencer.id).group("engagement.status")
错误
错误:表“参与”缺少 FROM 子句条目 第 1 行:...ents"."influencer_authorization_id" = $1 GROUP BY 参与度... ^
【问题讨论】:
-
Enumerable#group_by与 SQL 的GROUP BY非常不同。group_by或多或少用于构建元素相对于块相同的数组。GROUP BY用于对行进行分组,以便可以将聚合函数(例如count、max、...)应用于每个组。
标签: ruby-on-rails ruby postgresql ruby-on-rails-4