select rt.*, row_number() over(partition by category order by mark desc) from rank_test rt
1 数学 99 1
2 数学 90 2
3 数学 90 3
4 数学 60 4
5 语文 88 1
6 语文 80 2
7 语文 78 3
8 语文 70 4
select rt.*, rank() over(partition by category order by mark desc) from rank_test rt
1 数学 99 1
2 数学 90 2
3 数学 90 2
4 数学 60 4
5 语文 88 1
6 语文 80 2
7 语文 78 3
8 语文 70 4
select rt.*, dense_rank() over(partition by category order by mark desc) from rank_test rt
1 数学 99 1
2 数学 90 2
3 数学 90 2
4 数学 60 3
5 语文 88 1
6 语文 80 2
7 语文 78 3
8 语文 70 4