问题:其中bonus类型btype为1其奖金为薪水salary的10%,btype为2其奖金为薪水的20%,其他类型均为薪水的30%。 to_date='9999-01-01'表示当前薪水。 请你给出emp_no、first_name、last_name、奖金类型btype、对应的当前薪水情况salary以及奖金金额bonus。 bonus结果保留一位小数,输出结果按emp_no升序排序。

问题拆解:1.先把表1和表2链接重命名re,取出需要的字段emp_no,first_name,last_name,btype

2.将表re和表3salaries链接,取出需要的字段emp_no,first_name,last_name,btype,salary,和最复杂的字段bonus

3.字段bonus分三种情况,用case when语法写,case when v1 then r1 when v2 then r2 ... else rn end

4.case when外加round四舍五入 round(字段,1) 取一位小数

5.最后加入限定条件to_date='9999-01-01'

6.按照emp_no升序即可。order by emp_no asc,asc可以不写默认升序。

select re.emp_no, re.first_name, re.last_name, re.btype, s.salary, 
round(case when re.btype=1 then s.salary*0.1 when re.btype=2 then s.salary*0.2 
else s.salary*0.3 end, 1) as bonus
from 
(select e.emp_no, e.first_name, e.last_name, eb.btype 
from employees e join emp_bonus eb
ON e.emp_no= eb.emp_no) re
join salaries s
on re.emp_no=s.emp_no
where s.to_date='9999-01-01' 
order by re.emp_no