Запрос раздела, возвращающий повторные результаты - PullRequest
0 голосов
/ 05 июля 2018

У меня есть запрос на раздел, который возвращает повторяющиеся результаты.

Кто-нибудь знает почему?

Я пытаюсь суммировать продажи по зонам из таблицы, называемой агрегированной таблицей истории продаж, с использованием функции секционирования. Мне нужно привести пример того, как его можно использовать.

Код ниже и снимок результатов ниже.

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 голосов
/ 05 июля 2018

Работает как задумано.

SUM(Sales) OVER ()

Это займет сумму столбца Sales для всех строк и поместит это значение в новый столбец. Это, это будет одинаковое значение для всех строк.

SUM(Sales) OVER (PARTITION BY PriceZoneID)

Это займет сумму столбца Sales, сгруппированного (или разделенного) по PrizeZoneID, и поместит это значение в новый столбец. Таким образом, вы увидите то же значение за PriceZoneID.

Если вы хотите свернуть, добавьте группу по и удалите предложение over.

Select PriceZoneID, 
       SUM(Sales) AS TotalSalesByZone
FROM AggregatedSalesHistory
GROUP BY PriceZoneID
ORDER BY PriceZoneID
0 голосов
/ 05 июля 2018

Вам нужно добавить 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;
...