根据题目输出字段要求,需要对三张表进行链接操作,即join函数两次使用;又根据bonus的构成条件,使用case when对三种btype进行计算;最后细节处理,即用round(bonus字段,1)函数对bonus取一位小数,并且用where函数筛选当前日期并且进行升序排序。
SELECT
employees.emp_no,
employees.first_name,
employees.last_name,
emp_bonus.btype,
salaries.salary,
ROUND(
CASE
WHEN emp_bonus.btype = 1 THEN salaries.salary * 0.10
WHEN emp_bonus.btype = 2 THEN salaries.salary * 0.20
ELSE salaries.salary * 0.30
END, 1
) AS bonus
FROM
employees
JOIN
emp_bonus ON emp_bonus.emp_no = employees.emp_no
JOIN
salaries ON salaries.emp_no = employees.emp_no
WHERE
salaries.to_date = '9999-01-01'
ORDER BY
employees.emp_no ASC;