【发布时间】:2018-01-29 22:51:02
【问题描述】:
在 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
我要做的是用每个Style 的平均Amount 填充Groups 表上的[AvgXX] 列,其中Day 大于或等于100。
例如,Red 组属于StyleKey 1。 Orders 表中有 2 个条目用于 StyleKey 1 并且超过 100 天(参见记录 4 和 6)。因此,Red 组的 AvgXX 列应为 75.00。
Blue 组(第 29 组)的平均值应为 1,因为 1) Orders 表中只有 1 个 StyleKey 为 1 的组(参见第 2 行和第 3 行),DayKey 101 的总金额为 1 (并且第一行的 Day 小于 100,因此应该忽略)。
此外,我想要每个样式的平均值(目前只有 2 个样式)
通常,我会在可视化工具中进行这样的计算,但在这种情况下,很遗憾,我不能。
【问题讨论】:
-
蓝色的平均值应该是 0.5 而不是 1?
-
不,101是同一天,所以只能除以1天
-
您这里似乎有一堆标准。也许如果您提供您尝试的代码,我们可以帮助您拨入,但这不是很清楚需要什么。
标签: sql-server tsql ssms-2016