首先,理解题意,这道题的输出很明确,前五个字段emp_no,first_name,last_name,btype,salary很容易获取,所以这道题的题意很明确,你怎么给我算出bonus,并把这几个字段放在一个表中

第一步怎么求bonus,当是用salaries表连接bonus表,使用case语句来求了

如下:

select s.emp_no,btype,salary,(
case btype               // 用case查询对应的bonus
when 1 then salary*0.1  
when 2 then salary*0.2
else salary*0.3
end) bonus
from salaries s,emp_bonus eb 
where s.emp_no=eb.emp_no
and s.to_date='9999-01-01'

第二步求出了case之后,设上面的查询结果为表 L,那么表L连接表employees,连接条件为emp_no,就可以查出来所有的东西了。

如下:
select
e.emp_no,e.first_name,e.last_name,
l.btype,l.salary,l.bonus
from employees e
inner join L on l.emp_no=e.emp_no;