【Mysql】给出emp_no、first_name、last_name、奖金类型btype。。。

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

http://www.nowcoder.com/questionTerminal/5cdbf1dcbe8d4c689020b6b2743820bf

题目描述:给出emp_no、first_name、last_name、奖金类型btype、对应的当前薪水情况salary以及奖金金额bonus。 bonus类型btype为1其奖金为薪水salary的10%,btype为2其奖金为薪水的20%,其他类型均为薪水的30%。 当前薪水表示to_date='9999-01-01'。

方法一(case):

select e.emp_no,
    e.first_name,
    e.last_name,
    eb.btype,
    s.salary,
    (
        case when eb.btype=1  then s.salary*0.1
           when eb.btype=2 then s.salary*0.2
           else s.salary*0.3
        end
     ) as bonus from employees e join emp_bonus eb on e.emp_no=eb.emp_no
           join salaries s on eb.emp_no=s.emp_no
where s.to_date="9999-01-01"

case语法:
CASE
** WHEN condition1 THEN result1**
** WHEN condition2 THEN result2**
** WHEN conditionN THEN resultN**
** ELSE result**
END;
对于这道题,个人认为用case解答是最符合题意的。直接按条件选出奖金数额。

方法二(观察数据得出规律):

select e.emp_no,
    e.first_name,
    e.last_name,
    eb.btype,
    s.salary,
    s.salary*eb.btype*0.1 as bonus
from employees e join emp_bonus eb on e.emp_no=eb.emp_no
          join salaries s on eb.emp_no=s.emp_no
where s.to_date="9999-01-01"

如果观察测试案例的数据,可以发现规律btype类型为1,2,3时奖金分别是工资的0.1,0.2,0.3。所以按照这个规律可写出以上的mysql语句。但是题中表示的是其他类型均为薪水的30%。bonus类型btype为1其奖金为薪水salary的10%,btype为2其奖金为薪水的20%,其他类型均为薪水的30%。所以换个btype为4的测试案例就通不过了

牛客题霸-SQL篇【Mysql】 文章被收录于专栏

少壮不努力,老大勤刷题

全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
找不到工作死了算了:没事的,雨英,hr肯主动告知结果已经超越大部分hr了
点赞 评论 收藏
分享
程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务