【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】 文章被收录于专栏

少壮不努力,老大勤刷题

全部评论

相关推荐

06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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