题解 | 获取有奖金的员工相关信息。

获取有奖金的员工相关信息。

https://www.nowcoder.com/practice/5cdbf1dcbe8d4c689020b6b2743820bf

SELECT
  e.emp_no,
  e.first_name,
  e.last_name,
  em.btype, -- 统一引用 em 表的 btype(原表关联是 emp_bonus AS em)
  s.salary, -- 明确引用薪资表 s 的 salary 字段
 ROUND(
    CASE
      WHEN em.btype = 1 THEN s.salary * 0.1    -- btype=1:奖金=薪资×0.1
      WHEN em.btype = 2 THEN s.salary * 0.2    -- btype=2:奖金=薪资×0.2
      WHEN em.btype NOT IN (1, 2) THEN s.salary * 0.3  -- 其他 btype:奖金=薪资×0.3
    END, -- 关键:CASE WHEN 必须用 END 闭合
    1 -- 保留 1 位小数(ROUND 第二个参数是小数位数)
  ) AS bonus
FROM
  employees e
JOIN emp_bonus em ON em.emp_no = e.emp_no -- 员工与奖金表关联
JOIN salaries s ON s.emp_no = e.emp_no    -- 员工与薪资表关联
AND s.to_date='9999-01-01'
ORDER BY e.emp_no; -- 按员工编号排序

先算出奖金

再关联表

补全 CASE WHEN 的 END(必须闭合)

round在 CASE WHEN的外面

AND s.to_date='9999-01-01'

必须是在职员工

全部评论

相关推荐

03-03 19:02
已编辑
东华理工大学 Node.js
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务