oracle 和 mysql 排序 rank(),dense_rank()

mysql 的rank可以参考这篇博文https://blog.csdn.net/justry_deng/article/details/80597916

 

oracle 的rank(),dense_rank()

这2个函数使用方式基本一致,下面举例说明:

表test_user数据如下:

oracle 和 mysql 排序 rank(),dense_rank()_第1张图片

 

  rank() 非连续排序,如果有分数相同的,下一个排序等级会跳过对应的数量,如下:

select tu.*,rank() OVER(ORDER BY score) rank FROM test_user tu;

 

 

dense_rank()连续排序,如果分数相同,下一个等级连续排序,不会跳过,具体如下:

select tu.*,dense_rank() OVER(ORDER BY score) rank FROM test_user tu;

oracle 和 mysql 排序 rank(),dense_rank()_第2张图片

 

扩展:按科目 分类排序:

select tu.*,dense_rank() OVER(PARTITION BY sub_name ORDER BY score) rank FROM test_user tu;

oracle 和 mysql 排序 rank(),dense_rank()_第3张图片

PARTITION BY  分区,也可以以多个条件作为分区前提

select tu.*,dense_rank() OVER(PARTITION BY sub_name,name ORDER BY score) rank FROM test_user tu;

oracle 和 mysql 排序 rank(),dense_rank()_第4张图片

 

 

你可能感兴趣的:(数据库,rank,排序)