我尝试使用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,但必须有一个更清晰的记录方式?
答案 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')