一:case when then else end
select e.emp_no,e.first_name,e.last_name,em.btype ,s.salary, -- 直接输出的字段
(case btype when 1 then s.salary*0.1 -- case when得出不同条件的结果
when 2 then s.salary*0.2
else s.salary*0.3
end) as bonus
from employees as e join emp_bonus as em on e.emp_no=em.emp_no -- 连接条件
join salaries as s on s.emp_no=e.emp_no -- 连接条件
where to_date='9999-01-01'; -- 筛选条件
二: 这个感觉有点卡数字bug,刚好1就是0.1,2就是0.2,而且只有这两种情况,没有0.3的情况出现
select e.emp_no,first_name,last_name,btype ,salary,round(salary*(em.btype/10),1) as bonus
from employees as e join emp_bonus as em on e.emp_no=em.emp_no
left join salaries as s on s.emp_no=e.emp_no
where to_date='9999-01-01';