oracle与db2中聚合函数的使用

阅读更多
聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值。


SELECT a.*,RANK() OVER(ORDER BY col1) FROM table a;
会在最后一列显示该行的排序值

select * from (select rank() over(partition by 科目 order by 分数 desc) rk,a.* from a) t
where t.rk<=3;
会显示科目分组分数前三的数据

合计功能:计算出数值(4,1)在Order By Col1,Col2排序下的排序值,也就是col1=4,col2=1在排序以后的位置
SELECT RANK(4,1) WITHIN GROUP (ORDER BY col1,col2) FROM table;

dense_rank与rank()用法相当,但是有一个区别:dence_rank在并列关系是,相关等级不会跳过。rank则跳过
也就是说如果结果有两个值结果是1,如果用rank下一个就是3 而dense_rank是2

你可能感兴趣的:(DB2,Oracle)