在sql中简单排序

时间:2016-11-18 09:53:05

标签: mysql sql

我有以下数据表

    id   | name    |   passed    | rank    | Class
    1      abc           y           1        1
    2      xyz           y           1        2
    3      lmn           n           54       1
    4      opq           n           54       2
    5      rst           y           2        1
    6      uvw           y           2        2

什么SQL查询可以给我以下结果:

    id   | name    |   passed    | rank    | Class
    1      abc           y           1        1
    2      rst           y           2        1
    4      def           y           55       1
    3      lmn           n           54       1
    5      xyz           y           1        2
    6      uvw           y           2        2
    7      opq           n           54       2
  1. 按班级排序,所有学生的班级= 1,然后是2,依此类推。
  2. passsed == n应该总是到最后,如果有2名学生通过== n他们应该按顺序排序。
  3. 其他通过== y的学生应该排名明智。
  4. 尝试:

    select id, name, passed, rank, class
    from students
    ORDER BY passed DESC, rank
    

    这给出了:

        id   | name    |   passed    | rank    | Class
        1      abc           y           1        1
        4      xyz           y           1        2
        2      rst           y           2        1
        5      uvw           y           2        2
        3      def           y           55       1
        6      opq           n           54       2
        3      lmn           n           54       1
    

    所以我在底部传递了== n,并按照排名进行了休息。我认为唯一剩下的就是逐个分组。

1 个答案:

答案 0 :(得分:1)

您不能先添加订单或类吗?

select id, 
        name, 
        passed, 
        rank, 
        class
from students
ORDER BY `Class`, 
        passed DESC, 
        rank