6

查找所有员工入职时候的薪水情况

http://www.nowcoder.com/questionTerminal/23142e7a23e4480781a3b978b5e0f33a

题目:查找所有员工入职时候的薪水情况,给出emp_no以及salary,并按照emp_no进行逆序

方法1:子查询
select s.emp_no, s.salary
from salaries as s
where from_date = (select e.hire_date from employees as e where e.emp_no = s.emp_no)
order by s.emp_no desc;

方法2:使用内连接,hire_date时间和from_date时间一致
select e.emp_no, s.salary
from employees as e
inner join salaries as s
on e.emp_no = s.emp_no
where s.from_date = e.hire_date
order by e.emp_no desc;

方法3:使用(逗号)并列查询,hire_date时间和from_date时间一致
select e.emp_no, s.salary
from employees as e, salaries as s
where e.emp_no = s.emp_no
and s.from_date = e.hire_date
order by e.emp_no desc;
注意:内连接是取左右两张表的交集形成一个新表,用From并列两张表后仍然是两张表。如果还要对新表进行操作则要用内连接。从效率上看应该并列查询更快,因为不用形成新表。

方法4:获取salaries表中from_date中最小值对应的emp_no和salary,只用到salaries表
select emp_no, salary
from salaries
group by emp_no
having min(from_date)
order by emp_no desc;

全部评论
这个最后的min太扎心了😂😂😂
点赞 回复 分享
发布于 2020-12-01 10:03
第四种方法有问题把,把having min(from_date)去了也能通过 select emp_no, salary from salaries group by emp_no order by emp_no desc;
点赞 回复 分享
发布于 2020-10-28 20:29
可是使用group by子句时,select后面不是只可以跟统计函数和用于分组的列么?方法4的写法对么?
点赞 回复 分享
发布于 2020-09-29 10:10

相关推荐

05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
评论
5
1
分享

创作者周榜

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