表达式:Max(Sum([Sales]) OVER ([Region]))
OVER 是对Region进行分组。
原始数据:

1、 首先会计算内部聚合,然后得出各地区销量之和:

在计算的列中,计算结果始终会应用于输入表的所有行,因此,得出的各地区销量值会污损所有行:

随后会针对“Total Sales (SMEARED)”计算 Max(),得出的值为 350,而且因为我们插入了计算的列,该值也会污损所有行。这意味着最终结果为:

筛选数据表时,计算的列仍会根据整个数据表显示值。
这就导致,不管怎么筛选,【如筛选Region的值为WEST】,得到的最大值都是350。<

本文探讨了SQL中Max(Sum([Sales]))OVER([Region])表达式在分组聚合时的问题。当对数据进行聚合并应用OVER子句时,即使在筛选后,全数据集的聚合值仍会显示。例如,无论怎样筛选Region,最大销售额总是全数据的最高值。同样,Max()函数在筛选条件下也会返回全局最大值,而非筛选后的最大值。这可能导致预期结果与实际结果不符,尤其是在进行数据探索和分析时。


被折叠的 条评论
为什么被折叠?



