SQL:
select * from (select rank() over(partition by a.subject order by a.score desc) rk, a.* from xgj_2 a) t where t.rk <= 3; 栗子3拿第二个栗子的表 作为数据源。
合计功能:计算出数值(65,’语文’)在Orade By score ,subject排序下的排序值,也就是score=65,subject=语文在排序以后的位置
SELECT RANK(65,'语文') WITHIN GROUP (ORDER BY score ,subject ) "Rank" FROM xgj_2;
结果如下:
dense_rank与rank()用法相当,但是有一个区别:dence_rank在并列关系是,相关等级不会跳过。rank则跳过.
栗子1表xgj_3 数据规格:
A B C a liu wang a jin shu a cai kai b yang du b lin ying b yao cai b yang 99
例如:当rank时为:
而如果用dense_rank时为: