在SSMS中,我有一个Orders
事实表,如下所示:
订单
ID GroupKey OrderID Amount DaysKey
----------------------------------------------
1 29 29422 23.93 14
2 29 29444 -13.28 101
3 29 29453 14.28 101
4 30 30194 100.00 103
5 32 30201 101.53 93
6 32 30291 50.00 121
我的Groups
维度看起来像这样
组
Key Name StyleKey AvgXX
-------------------------------------------
29 Blue 2 NULL
30 xyz 1 NULL
31 doesntmatter 2 NULL
32 Red 1 NULL
我有一个Days
维度,如下所示:
天
Key Day
------------
1 0
2 1
3 4
... ...
1000 999
我有一个Style
维度,如下所示:
风格
Key Style
---------------
1 3.5
2 2
我要做的是填充[AvgXX]
表格上的Groups
列,其Amount
更高的每个Style
的平均值Day
大于或等于100.
例如,Red
组属于StyleKey 1
。 Orders
表中有2个条目用于StyleKey 1
且大于100天(参见记录4和6)。因此,AvgXX
组的Red
列应为75.00。
Blue
组(组29)的平均值应为1,因为1)Orders表中只有1个StyleKey 1组(参见第2行和第3行)和DayKey 101的总金额是1(并且第一行的日期小于100,因此应该忽略它。)
此外,我想要每个Style的平均值(目前只有2个样式)
通常,我会在可视化工具中进行这样的计算,但在这种情况下,遗憾的是,我不能。
答案 0 :(得分:0)
也许这个
Select GroupKey
, Average(Amount) OVER (Partition By GroupKey)
FROM Orders
WHERE Day >= 100
GROUP BY GroupKey
如果您想查看每个组密钥的平均值。
答案 1 :(得分:0)
select StyleKey, avg(Amount) 'awb'
from groups
join orders
on orders.ID = groups.key
and DaysKey >= 101
你将需要弄清楚如何按天计算总和 这不是编码服务