分区查询返回重复结果

时间:2018-07-05 13:53:59

标签: sql-server ssms sql-server-2014

我有一个分区查询,该查询返回重复的结果。

有人知道为什么吗?

我正在尝试使用分区功能从称为汇总销售历史记录表的表中按区域汇总销售情况。我需要举一个如何使用它的例子。

下面是代码,下面是结果快照。

Select PriceZoneID, 
       Sales,
       SUM(Sales) OVER () AS TotalSales, --Removed Space
       SUM(Sales) OVER (PARTITION BY PriceZoneID) AS TotalSalesByZone
FROM AggregatedSalesHistory
ORDER BY PriceZoneID, Sales;

Results

2 个答案:

答案 0 :(得分:0)

您需要添加GROUP BY来限制结果。

Select PriceZoneID, 
       Sales,
       SUM(Sales) OVER () AS TotalSales --Removed Space
       --SUM(Sales) OVER (PARTITION BY PriceZoneID) AS TotalSalesByZone
FROM AggregatedSalesHistory
GROUP BY PriceZoneID, Sales
ORDER BY PriceZoneID, Sales;

答案 1 :(得分:0)

它按设计工作。

SUM(Sales) OVER ()

这将获取所有行Sales列的总和,并将该值放在新列中。这样,所有行的值都将相同。

SUM(Sales) OVER (PARTITION BY PriceZoneID)

这将采用Sales分组(或分区)的PrizeZoneID列的总和,并将该值放在新列中。因此,您将看到每个PriceZoneID的相同值。

如果要汇总,请添加group by并删除over子句。

Select PriceZoneID, 
       SUM(Sales) AS TotalSalesByZone
FROM AggregatedSalesHistory
GROUP BY PriceZoneID
ORDER BY PriceZoneID