题目
-
题目来源: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都只有一项,但是里并没有用到分组!
SQL查询:获取有奖金员工信息
该博客介绍了如何使用SQL查询从多张表中获取有奖金的员工详细信息,包括员工编号、姓名、奖金类型及计算后的奖金金额。通过案例展示了JOIN操作和CASE语句的运用,强调了GROUP BY子句的适用场景,并提示了在处理此类问题时应注意避免错误的分组。
3392

被折叠的 条评论
为什么被折叠?



