根据题目输出字段要求,需要对三张表进行链接操作,即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;