一個按成績排序SQL的寫法問題


 

測試數據:

SQL> select * from sscore;

NAME       SCORE

---------- -----

aa            99

bb            56

cc            56

dd            77

ee            78

ff            76

gg            78

ff            50

8 rows selected

針對以上表,需要按成績進行排序,從而取得名次信息:

實現方法一:分析函數

SQL> select name,score,dense_rank() over(order by score desc) as rk

  2  from sscore;

NAME       SCORE         RK

---------- ----- ----------

aa            99          1

gg            78          2

ee            78          2

dd            77          3

ff            76          4

cc            56          5

bb            56          5

ff            50          6

8 rows selected

實現方法二:普通SQL:

SQL> select a.name,

  2         a.score,

  3         (select count(distinct score) from sscore b where a.score <= b.score) as rk

  4    from sscore a

  5   order by rk asc;

NAME       SCORE         RK

---------- ----- ----------

aa            99          1

gg            78          2

ee            78          2

dd            77          3

ff            76          4

cc            56          5

bb            56          5

ff            50          6

8 rows selected


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM