聚合级别已关闭(Postgresql)
Posted
技术标签:
【中文标题】聚合级别已关闭(Postgresql)【英文标题】:Aggregation level is off (Postgresql) 【发布时间】:2021-07-04 18:07:59 【问题描述】:我有 2 位客户及其订单的订单数据。我正在尝试计算每个客户的价格总和,仅针对产品 N 的特定订单
表:
这是我的查询:
select Customer_ID, Order_ID, Sales_Date,
sum(Price) over (partition by Customer_ID, Order_ID order by Customer_ID, Order_ID)
from orders
group by 1,2,3, Price
order by;
由于某种原因,我不明白它为每个同一客户提供了几行。我试图让每个客户只生成一行并订购产品 N
这是我当前的输出:
期望的结果:
【问题讨论】:
【参考方案1】:为什么要使用窗口函数?我想你只是想要聚合:
select Customer_ID, Order_ID, Sales_Date,
sum(Price)
from orders
group by 1,2,3;
如果您只想要一种产品,请添加where product = 'N'
。
【讨论】:
我看到我试图让事情变得比他们更复杂。如果我想为每个产品生成一个价格列 - 您是否建议以与上述相同的方式为每个产品编写一个单独的 CTE 并在最终的选择语句中组合?还是有更有效的方法? @sweti 。 . .如果您想为每种产品单独定价,您将使用条件聚合。如果那是你想要的,我建议你问一个新问题。以上是关于聚合级别已关闭(Postgresql)的主要内容,如果未能解决你的问题,请参考以下文章