在活动记录中一起使用where和group by的语法

时间:2013-11-18 23:31:47

标签: sql ruby-on-rails activerecord group-by

我尝试使用Google搜索,但没有找到一个使用where和groupby的示例

尝试应用where然后分组:

User.group(:role_id).where('created_at >= ?', start_date)

User.where('created_at >= ?', start_date).group(:role_id)

我收到错误:

ERROR:  column "user.id" must appear in the GROUP BY clause or be used in an aggregate function

我可能只是使用原始sql,但必须有一个更清晰的记录方式?

1 个答案:

答案 0 :(得分:1)

您需要在查询中附加至少select()条件,因为group_by条件与count(*)sum(*)distinct(*)或其他SQL聚合函数一起使用。 select()条件中显示的字段必须是group_by条件或聚合函数中表示的字段。

例如

User.group(:role_id).where('created_at >= ?', start_date).select('count(*) as count, role_id')