根据数据项的值排序

需求描述

需求:查询雇员表emp里的员工编号、员工名、工作信息、奖金信息,这里需要对工作是“MANAGER”和“SALESMAN”的按照comm降序排序其他员工按照员工编号降序排列。

解决方法:这里需要在order by后接case when之类的条件判断以调整排序规则。order by可以跟多个字段,排在前面的规则会被优先应用。

注: 数据库数据集SQL脚本详见如下链接地址

​​员工表结构和数据初始化SQL脚本​​

SQL代码

-- Oracle:
SELECT empno,ename,job,comm
FROM emp
ORDER BY CASE WHEN job IN ('SALESMAN','MANAGER') THEN comm ELSE empno END DESC

执行结果

检索数据_22_根据数据项的值排序_数据分析

-- Sql Server、Mysql:
SELECT empno,ename,job,comm
FROM emp
ORDER BY CASE WHEN job IN ('SALESMAN','MANAGER') THEN comm ELSE empno END DESC

执行结果

检索数据_22_根据数据项的值排序_sql_02