Рассчитать процент на 2 столбца, используя функцию Windows + раздел - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь написать запрос, который рассчитывает для каждого клиента его часть от общей прибыли за год.

Я отошел, чтобы написать этот запрос с помощью соединения, но я хочу написать это с помощью функции Windows + раздел.

SELECT t1.Customer_ID, t1.Year, [Sum of Profit]/[Total Profit] [Part of Profit]
FROM
(SELECT Customer_ID, DATEPART(YEAR, Order_Date) Year, 
SUM(Try_convert(float,Profit)) [Sum of Profit]
FROM Orders
GROUP BY Customer_ID, DATEPART(YEAR, Order_Date)) t1
JOIN
(SELECT DATEPART(YEAR, Order_Date) Year, SUM(Try_convert(float,Profit)) [Total Profit]
FROM Orders
GROUP BY DATEPART(YEAR, Order_Date)) t2
ON t1.Year = t2.Year

enter image description here

Как использовать функцию Windows + раздел для выполнения того же запроса?

1 Ответ

0 голосов
/ 25 мая 2019

Вы можете использовать оконные функции в запросе агрегации:

SELECT Customer_ID, YEAR(Order_Date) as Year, 
       SUM(Try_convert(float, Profit)) as [Sum of Profit],
       (SUM(Try_convert(float, Profit)) /
        SUM(SUM(Try_convert(float, Profit))) OVER ()
       ) as ratio
FROM Orders
GROUP BY Customer_ID, YEAR(Order_Date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...