如下是一张表,来自leetcode,请按照下面的分数排名。
使用mysql8版本有现成的函数支持,支持各种不同的排名
第一种:
SELECT RANK() over(ORDER BY score DESC) as num from aa_aa;
1
1
3
4
4
6
第二种:
SELECT DENSE_RANK() over(ORDER BY score DESC) as num from aa_aa;
结果:
1
1
2
3
3
4
第三种:
SELECT ROW_NUMBER() over(ORDER BY score DESC) as num from aa_aa;
结果:
1
2
3
4
5
6
第四种:分组排名(学习前10名为第一组,学习成绩10到20名第二组...)
SELECT id,score,NTILE(3) over(ORDER BY score DESC) as num from aa_aa;
结果:
id score num
3 4.00 1
5 4.00 1
4 3.85 2
2 3.65 2
6 3.65 3
1 3.50 3