请帮忙完成任务
显示佣金高于工资的员工的所有详细信息
为所有其他员工(不是经理,也不是销售员)在以下组中创建附加列 - “Salary_range”是经理或销售员的员工,在以下组“小于 2000”、“介于 2000 和 5000”和“超过 5000”中) 值应为 'MISSING'。
SELECT * FROM employees WHERE commission>salary
开始了,但接下来应该如何进行?
示例表:员工
emp_id | emp_name | job_name | manager_id | hire_date | salary | commission | dep_id
-------|----------|-----------|------------|------------|---------|------------|--------
68319 | KAYLING | PRESIDENT | | 1991-11-18 | 6000.00 | | 1001
66928 | BLAZE | MANAGER | 68319 | 1991-05-01 | 2750.00 | | 3001
67832 | CLARE | MANAGER | 68319 | 1991-06-09 | 2550.00 | | 1001
65646 | JONAS | MANAGER | 68319 | 1991-04-02 | 2957.00 | | 2001
67858 | SCARLET | ANALYST | 65646 | 1997-04-19 | 3100.00 | | 2001
69062 | FRANK | ANALYST | 65646 | 1991-12-03 | 3100.00 | | 2001
63679 | SANDRINE | CLERK | 69062 | 1990-12-18 | 900.00 | | 2001
64989 | ADELYN | SALESMAN | 66928 | 1991-02-20 | 1700.00 | 400.00 | 3001
65271 | WADE | SALESMAN | 66928 | 1991-02-22 | 1350.00 | 600.00 | 3001
66564 | MADDEN | SALESMAN | 66928 | 1991-09-28 | 1350.00 | 1500.00 | 3001
68454 | TUCKER | SALESMAN | 66928 | 1991-09-08 | 1600.00 | 0.00 | 3001
68736 | ADNRES | CLERK | 67858 | 1997-05-23 | 1200.00 | | 2001
69000 | JULIUS | CLERK | 66928 | 1991-12-03 | 1050.00 | | 3001
69324 | MARKER | CLERK | 67832 | 1992-01-23 | 1400.00 | | 1001
答案 0 :(得分:0)
使用嵌套的 CASE 语句。
select *
,case
when JOB_ID in ('MANAGER', 'SALESMAN') then
case
when SALARY < 2000 then 'Less than 2000'
when SALARY between 2000 and 5000 then 'Between 2000 and 5000'
when SALARY > 5000 then 'More than 5000'
end
else 'MISSING'
end as SALARY_RANGE
from EMPLOYEES
where COMMISSION > SALARY