--rank() over(order by column)不连续排名
sql : select t.STUDENTNO ,t.STUDENTCOURSEGRADE, rank() over(order by studentcoursegrade desc nulls last) as ranknum from student t;
result:
1 1001005 67 1
2 1001006 54 2
3 1001004 45 3
4 1001002 34 4
5 1001003 34 4
6 1001001 34 4
7 1001007 32 7
8 1001008 23 8
9 1001009 9 这里的null值,排名最后,由nulls last来控制,默认null是排在最前面的
--dense_rank() over(order by column)连续排名
select t.STUDENTNO,t.STUDENTCOURSEGRADE , dense_rank() over(order by studentcoursegrade desc nulls last) as ranknum from student t;
result:
1 1001005 67 1
2 1001006 54 2
3 1001004 45 3
4 1001002 34 4
5 1001003 34 4
6 1001001 34 4
7 1001007 32 5
8 1001008 23 6
9 1001009 7 同上