• 一个按成绩排序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

  • 相关阅读:
    迭代器生成器
    eval()
    【剑指offer】调整数组数字位置
    【剑指offer】二进制中1的个数
    【剑指offer】斐波那契数列非递归求解第N项
    【剑指offer】两个栈实现队列
    【剑指offer】逆序输出链表
    【剑指offer】字符串替换
    【剑指offer】规则二维数组查找
    Java转型
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/7601199.html
Copyright © 2020-2023  润新知