将 SQL 查询写入 -
给定 - 不同公司的日级别销售数据
1) 为给定数据创建月级别、年初至今级别数据。
YTD-Year to Date
YTD(Mar) = Jan + Feb + Mar
2) 根据 Company 为步骤 1 中创建的数据创建总体级别。将其标记为“Industry”
例如:Industry = CompA + CompB + CompC + CompD
3) 计算步骤 2 之后创建的数据的月和 YTD 水平份额(包括价值、数量)。
份额计算 - 比较/行业。
我知道我们可以在 over 子句中使用 partition by 但总的来说我不明白这个问题。
schema:
[Period] - date
[Company]- nvarchar
[Metric] - nvarchar
[Values] - Float
Period Company Metric Values
01-01-2018 CompA Sales Vol 72947.30664
02-01-2018 CompA Sales Vol 21553.65941
03-01-2018 CompA Sales Vol 777.6831962
04-01-2018 CompA Sales Vol 34871.11234
05-01-2018 CompA Sales Vol 42598.06526
我尝试按月和年使用分区。但我不清楚这是否是预期的。
SELECT YEAR([Period]) AS Year,
MONTH([Period]) as month,
MTD = SUM([Values]) OVER (PARTITION BY year([period]),month([period]) order by period),
YTD = SUM([Values]) OVER (PARTITION BY Year([period]) order by period)
FROM DP