记录一个常见的例子供学习参考
连续排名dense_rank();不连续排名rank()
分组partition;不分组
原始表:t_score
姓名 学科 成绩
张三 english 80
李四 english 70
王五 english 90
赵六 english 80
张三 chinese 90
李四 chinese 70
王五 chinese 85
赵六 chinese 90
查询各学生english的排名情况
结果表:
姓名 学科 成绩 排名
王五 english 90 1
张三 english 80 2
赵六 english 80 2
李四 english 70 4
sql:
select t.name,t.xueke,t.score,rank() over(order by score desc) 排名 from t_socre t where xueke='english';
查询各学生各学科的排名情况:
结果表:
姓名 学科 成绩 排名
王五 english 90 1
张三 english 80 2
赵六 english 80 2
李四 english 70 4
张三 chinese 90 1
赵六 chinese 90 1
王五 chinese 85 3
李四 chinese 70 4
sql:
select t.name,t.xueke,t.score,rank() over(partition by xueke order by score desc) 排名 from t_score t;
查询各科前两名:
select t.name,t.xueke,t.score,rank() over(partition by xueke order by score desc) 排名 from t_score t where t.排名<=2;