通过多个分区聚合并补偿重复

时间:2012-04-18 15:09:28

标签: sql tsql

假设这是表的一部分

[Level1] [Level2] [Level3] [Record #] [Measure]
cat1_1    cat2_1    cat3_1   rec_1       5
cat1_2    cat2_1    cat3_2   rec_2      10
cat1_1    cat2_1    cat3_3   rec_2      10

我想找到一种像这样聚合的方法

[Level 1] [Level 2] [Level 3] [Average 1] [Average 2] [Average 3]
cat1_1     cat2_1    cat3_1      7.5        7.5         10
cat1_1     cat2_1    cat3_3      7.5        7.5         10
cat1_2     cat2_1    cat3_2      10         7.5         5

我觉得有点难以描述,但总之我希望聚合重叠而不计算任何记录两次(即[等级2] = cat2_1的平均值不是12.5)。似乎OVER()无法完成此任务,因为您无法嵌套它。我是否需要将这些级别的每个不同组合加入到具有GROUP BY的三个聚合表中?

我差点在AVG(DISTINCT [Record #]'s [Measure]) OVER(PARTITION BY [Level X])之后。

0 个答案:

没有答案