最容易理解的题解

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

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

相关推荐

8 收藏 评论
分享
牛客网
牛客企业服务