在Rails Postgres上按字段分组结果

时间:2019-02-20 13:31:17

标签: ruby-on-rails postgresql group-by

此刻,我正在研究Rails,并尝试按field对查询结果进行分组。

查询的创建者:
@orders = Order.includes(:product).where(user_id: current_user.id, paid: 0).group(:product_id)

它在sqlite(dev env)上运行良好,但在生产(postgreSQL)时抛出致命错误。

错误是:

ActionView::Template::Error (PG::GroupingError: ERROR:  column "orders.id" must appear in the GROUP BY clause or be used in an aggregate function

嗯..我在这里做错了什么? 谢谢

1 个答案:

答案 0 :(得分:0)

如果要归入postgres,则需要直接选择该列,或者需要调用使用此列的聚合函数。 Count是一个聚合函数,您可以通过以下方式在Rails中实现

@product_counts = Order.where(user: current_user, paid: 0).group(:product_id).count

Postgres在您分组的列上自动执行Count,在本例中为product_id。这将为您提供这样的哈希值:

{ product_id => count }

有关更多信息,请参见此处:https://www.tutorialspoint.com/postgresql/postgresql_group_by.htm