MySQL : 员工按职位等级和职位条件排序

时间:2021-01-29 10:06:35

标签: mysql

我有一张员工表。如下

<头>
姓名 姓氏 级别 job_position
emp 1 sur 1 13 助理州长
emp 2 sur 2 12 CEO
emp 3 sur 3 12 CEO
emp 4 sur 4 12 特别
emp 5 Sur 5 11 副总裁
emp 6 Sur 6 11 导演
emp 7 Sur 7 11 院士
emp 8 Sur 8 10 副总监
emp 9 Sur 9 10 院士
emp 10 Sur 10 10 院士
emp 11 Sur 11 10 院士
emp 12 Sur 12 9 助理导演
emp 13 Sur 13 9 院士
emp 14 Sur 14 9 专家
.
.
.
emp 100 Sur 100 2 员工

因为在我的组织内 他们非常重视级别和职位。 我想根据条件对员工列表进行排序:

  1. 首先从“级别”列排序。如果上级先上,下级后上

  2. 如果是同一个级别来分析是“管理”还是“经营”。 “管理”在先,“运营”在后。

  3. 进入

    1. 管理层是:CEO、VICE CEO、助理CEO、总监、副总监、助理总监
    2. 运营的是:特殊的、学者、专家、员工
  4. 如果他们是同一级别并且他是'managemnt'。我希望它按如下排序。

     1. CEO
     2. VICE CEO
     3. Assistant CEO
     4. Director
     5. Vice Director
     6. Assistant Director  
    
  5. 如果它们处于同一级别并且“操作”了他。我希望它按如下方式排序。

     1.  Special           
     2.  academician
     3.  Expert
     4.  Employee
    

我应该写Mysql来对员工姓名进行排序。根据级别和位置


附注。对不起英语。

1 个答案:

答案 0 :(得分:0)

您可以在 case 子句中使用 order by 表达式:

order by level desc,
         case job_position
             when "CEO" then 1
             when "VICE CEO" then 2
             when "Assistant CEO" then 3
             when "Director" then 4
             when "Vice Director" then 5
             when "Assistant Director" then 6
             when "Special" then 10
             when "academician" then 11
             when "Expert" then 12
             else 99
         end

确保大小写正确(我看到您问题中的“专家”和“专家”有所不同)。

但是,最好创建一个单独的参考表(如 job_positions),其中包含所有这些位置以及唯一的 id(序列号)列(从您的主表),一个 name(具有这些值“CEO”,...等)和一个 order 列,它将确定顺序。然后你不需要这个带有 case 表达式的技巧,只需加入该表并按 order 列排序。