最容易理解的题解

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

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

首先,理解题意,这道题的输出很明确,前五个字段emp_no,first_name,last_name,btype,salary很容易获取,所以这道题的题意很明确,你怎么给我算出bonus,并把这几个字段放在一个表中

第一步怎么求bonus,当是用salaries表连接bonus表,使用case语句来求了

如下:

select s.emp_no,btype,salary,(
case btype               // 用case查询对应的bonus
when 1 then salary*0.1  
when 2 then salary*0.2
else salary*0.3
end) bonus
from salaries s,emp_bonus eb 
where s.emp_no=eb.emp_no
and s.to_date='9999-01-01'

第二步求出了case之后,设上面的查询结果为表 L,那么表L连接表employees,连接条件为emp_no,就可以查出来所有的东西了。

如下:
select
e.emp_no,e.first_name,e.last_name,
l.btype,l.salary,l.bonus
from employees e
inner join L on l.emp_no=e.emp_no;

全部评论
这个破题有问题,牛客网上的sql联系题都不严谨,这个题给了部门员工表,还给了在职时间,应该关联起来看看员工表里的员工还在不在职才比较严谨
1 回复 分享
发布于 2021-11-08 23:52
请问怎么设置为l
1 回复 分享
发布于 2021-04-06 22:08
跑了不对啊
点赞 回复 分享
发布于 2021-09-04 20:33

相关推荐

06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
评论
9
收藏
分享

创作者周榜

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