oracle中的 keep 和 over 的区别

如题所述

keep就是个关键字,指明后面的括号里是按照指定规则排名的top 1或bottom1,因为是dense_rank排名,所以可能有重复的,外面用min/max那么只返回一个值,比如用sum可能汇总多个相同值。ver指定分区,如果没有over则是对所有行应用一次分析函数,因此结果就一行,有over并且指定了分区,那么分析函数的计算范围就在此分区内,对此分区每一行都使用分析函数,分区内的每一行的分析函数值是一样的,而且最终返回的行和总行数相同。或有over里面没有分区则是对每一行应用分析函数,计算范围是所有行,因此所有行返回的分析函数值都一样。

当然还可以与group by结合,那就很复杂了,也很常见,反正这个函数就是求top1或bottom1的。
温馨提示:答案为网友推荐,仅供参考
相似回答