色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

rank函數和order

劉柏宏2年前20瀏覽0評論

rank函數和order?

rank,order by 看上去都是排序,但rank的功能簡直不要太靈活太強大。

order by就只是個排序,比如:select 學生姓名,科目,分數 from 成績表 order by 分數 desc。

但是,當學生非常多時,order by只看出學生的大致成績分布,不能看出具體的名次。如果要知道名次,就得rank配合上場了,如:select 學生姓名,科目,分數,rank() over(order by 分數 desc ) as 名次 from 成績表 。用這個排序有個好處,如果有并列名次的,后面的名次會自動累積增加。比如有三個并列第2的,再下一個名次就是5。如果不想名次累積增加,就寫成:select 學生姓名,科目 ,分數,dense_rank() over(order by 分數 desc ) as 名次 from 成績表。這樣在三個并列第2之后,名次仍然是第3。

以上方式是拉通排名次的,不管語文數學還是英語,都由高到低排名次。

rank還可以分區域查詢,也就是說如果我們想各個科目分別排序,可以這么寫:select 學生姓名,科目,分數,rank() over(partition by 科目 order by 分數 desc ) as 名次 from 成績表。