oracle over 函数几个例子
测试使用的数据为scott/tiger模式下的emp表:
我们使用JOB和SAL这两个列测试:
上面语句指按照职业JOB分组(partition by job)然后在每个分组内,按照薪水(sal)进行排名。注意到并列名次,例如SLAESMAN这个职业的,有两个1250并列第一,1500就是第3名了。
将RANK()换成DENSE_RAND看看区别:
可以看到,在处理并列问题上,并列的名次不占用名次编号。
另外还有一个常用的分析函数是SUM() OVER:
SUM() OVER计算累计求和,从第一行开始,累计SAL列的值,注意到order by sal,如果不按照sal排序,结果会是这样:
如果要针对每个分组进行分别累计求和,则只需加上分区PARTITION BY:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。