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

  • 相关阅读:
    uniapp上传图片
    vue 路由router传参,刷新丢失问题
    前端网站收藏
    uni.startPullDownRefresh 只能执行一次的解决方案
    移动端,h5页面1px 1像素边框过粗解决方案
    让WebApi支持Namespace
    Ubuntu 14.04下安装GitLab
    Ubuntu学习笔记
    淘宝订单数据转CSV
    修改SQL Server 数据库的编码
  • 原文地址:https://www.cnblogs.com/wcwen1990/p/7601199.html
Copyright © 2020-2023  润新知