zoukankan      html  css  js  c++  java
  • 排序(分组后排序&整排)

    一.整排

    要求:根据score进行排名,分数相同,名次相同,且连续

    表如下图:

     sql语句:

    方法一:
    select
    a.score, (select count(distinct b.score) from test01 b where b.score >=a.score) as rank1 from test01 a order by score desc;

    结果如下图:

    方法二:
    select score,dense_rank() over(order by score desc) rank2 from test01

    结果如下图:

     注意:重新命名时不要使用rank,会报错

    二.分组后排序

    要求:每一门课的最高两名

    表:test01

    方法一:

    select *
    from
    (
    select
    subject,score,
    @ROW:=case when @su=subject then @ROW+1 else 1 end rn,
    @su:=subject
    from
    (select subject,score from test01 order by subject,score desc) t1,
    (select @ROW:=0, @su:='') t2
    )t3
    where rn<=2

    注意:@ROW:=是用来赋值的

    结果如下图:

    方法二:

    select *
    from
    (select subject,score,row_number() over(partition by subject order by score desc) rn from test01) t
    where t.rn <=2

    结果如下图:

  • 相关阅读:
    php笔记--php安装
    IEDA-Git的应用
    php类型
    3.比较与逻辑运算
    2.阶乘
    1.双分支
    013_request对象包含的内容以及获取
    011_jsp引入JSTL后实现jsp的解耦
    010_jsp引入JSTL
    ORACLE1.28 面试题
  • 原文地址:https://www.cnblogs.com/yezihan/p/11984386.html
Copyright © 2011-2022 走看看