plsql排序集

2018-09-05 10:15 更新

想限制排序方式可以用分析函数 求出各科前3名 SELECT STUDENT_ID,NAME,COURSE,SCORE,RANK FROM (SELECT STUDENT_ID,NAME,COURSE,SCORE, ROW_NUMBER() OVER (PARTITION BY COURSE ORDER BY SCORE DESC NULLS LAST) RANK FROM SCORE) WHERE RANK <= 3; STUDENT_ID NAME COURSE SCORE RANK


  1. 2 喜羊羊 数学 100 1
  2. 3 机器猫 数学 80 2
  3. 4 蓝精灵 数学 80 3
  4. 1 灰太狼 语文 5 1
  5. Oracle分析函数 朱元中
  6. 2013-01-17 page 21
  7. ROW_NUMBER()
  8. SELECT STUDENT_ID,NAME,COURSE,SCORE,
  9. DENSE_RANK() OVER (PARTITION BY COURSE
  10. ORDER BY SCORE DESC NULLS LAST) RANK
  11. FROM SCORE;
  12. STUDENT_ID NAME COURSE SCORE RANK
  13. ---------- -------- ------ ---------- -----
  14. 2 喜羊羊 数学 100 1
  15. 3 机器猫 数学 80 2
  16. 4 蓝精灵 数学 80 2
  17. 5 Darwin 数学 50 3
  18. 1 灰太狼 数学 4
  19. 1 灰太狼 语文 5 1
  20. SELECT STUDENT_ID,NAME,COURSE,SCORE,RANK
  21. FROM (SELECT STUDENT_ID,NAME,COURSE,SCORE,
  22. DENSE_RANK() OVER (PARTITION BY COURSE
  23. ORDER BY SCORE DESC NULLS LAST) RANK
  24. FROM SCORE)
  25. WHERE RANK <= 3;
  26. STUDENT_ID NAME COURSE SCORE RANK
  27. ---------- -------- ------ ---------- -----
  28. 2 喜羊羊 数学 100 1
  29. 3 机器猫 数学 80 2
  30. 4 蓝精灵 数学 80 2
  31. 5 Darwin 数学 50 3
  32. 1 灰太狼 语文 5 1
  33. SELECT STUDENT_ID,NAME,COURSE,SCORE,
  34. RANK() OVER (PARTITION BY COURSE
  35. ORDER BY SCORE DESC NULLS LAST) RANK
  36. FROM SCORE;
  37. STUDENT_ID NAME COURSE SCORE RANK
  38. ---------- -------- ------ ---------- -----
  39. 2 喜羊羊 数学 100 1
  40. 3 机器猫 数学 80 2
  41. 4 蓝精灵 数学 80 2
  42. 5 Darwin 数学 50 4
  43. 1 灰太狼 数学 5
  44. 1 灰太狼 语文 5 1
  45. SELECT STUDENT_ID,NAME,COURSE,SCORE,RANK
  46. FROM (SELECT STUDENT_ID,NAME,COURSE,SCORE,
  47. RANK() OVER (PARTITION BY COURSE
  48. ORDER BY SCORE DESC NULLS LAST) RANK
  49. FROM SCORE)
  50. WHERE RANK <= 3;
  51. STUDENT_ID NAME COURSE SCORE RANK
  52. ---------- -------- ------ ---------- -----
  53. 2 喜羊羊 数学 100 1
  54. 3 机器猫 数学 80 2
  55. 4 蓝精灵 数学 80 2
  56. 1 灰太狼 语文 5 1
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号