题目
-
题目来源:SQL59 获取有奖金的员工相关信息
-
题目描述
给出emp_no、first_name、last_name、奖金类型btype、对应的当前薪水情况salary以及奖金金额bonus。
bonus结果保留一位小数,输出结果按emp_no升序排序。 -
三张表
-
所需结果
题解
思路:
主要考察表连接以及条件表达式。
SELECT e.emp_no,
e.first_name,
e.last_name,
eb.btype,
s.salary,
CASE
WHEN eb.btype = 1 THEN ROUND(0.1 * s.salary, 1)
WHEN eb.btype = 2 THEN ROUND(0.2 * s.salary, 1)
ELSE ROUND(0.3 * s.salary, 1)
END bonus
FROM employees e
JOIN emp_bonus eb
ON e.emp_no = eb.emp_no
JOIN salaries s
ON e.emp_no = s.emp_no
WHERE to_date='9999-01-01'
# GROUP BY e.emp_no # 这个 GROUP BY 加上就错了
ORDER BY e.emp_no
一个注意的地方是,GROUP BY 一般只与聚合函数一起使用,本题虽然每个emp_no
都只有一项,但是里并没有用到分组!