轨道 - 按聚合函数的结果分组?



假设我有一个购买表,其中包含客户customer_id以及他们在购买price上花费的钱。我想对每个客户的总支出求和,然后找到这些总和的频率。

我尝试了类似的东西:

Purchase.
group(:customer_id).
select("SUM(price)").
group("SUM(price)").
count

但收到错误ActiveRecord::StatementInvalid: PG::GroupingError: ERROR: aggregate function calls cannot be nested

有一个两步过程,在这个过程中,我"SUM(price)"提取为数组并将其转换为哈希,总和价格作为键,频率作为值,但我想知道是否有使用 Rails 语法的一步查询。

该表上还有其他列吗?

尝试也对它们进行分组。

Purchase.select("SUM(price),purchase_id").group_by(:purchase_id)

确保仅选取所需的列并对其进行分组。

最新更新