题解 | #获取当前薪水第二多的员工的emp_no以及其对应的薪水salary#

获取当前薪水第二多的员工的emp_no以及其对应的薪水salary

http://www.nowcoder.com/practice/c1472daba75d4635b7f8540b837cc719

-- max嵌套
select e.emp_no,s.salary,e.last_name,e.first_name
from employees as e inner join salaries as s
    on e.emp_no = s.emp_no
where to_date = '9999-01-01'
and salary = (
    select max(salary) from salaries
    where to_date = '9999-01-01'
    and salary < (
        select max(salary)
        from salaries
        where to_date = '9999-01-01'
    )
);

-- 窗口函数
select b.emp_no,b.salary,e.last_name,e.first_name from
employees as e inner join 
(selcet emp_no,salary,dense_rank() over (partition by to_date order by salary desc) as rk
from salaries
where to_date = '9999-01-01') as b
on e.emp_no = b.emp_no
where rk = 2;

 -- 自连接和count函数计算排名
select e.emp_no,s.salary,e.last_name,e.first_name
from employees as e inner join salaries as s
    on e.emp_no = s.emp_no
where s.salary = 
    (
        select s1.salary
        from salaries as s1 join salaries as s2

        -- <=代表比某个薪水值小的分到一组
        on s1.salary <= s2.salary
        group by s1.salary
        having count(distinct s2.salary) = 2
    );






全部评论

相关推荐

不愿透露姓名的神秘牛友
09-11 10:14
点赞 评论 收藏
分享
08-27 21:03
已编辑
西南石油大学 Java
冷花幽露:大概率是了,京东面试就是这样。我上周一面也是20多分钟,面试官问的很刁钻的问题也答上来了,面完过了几天还是没推进,泡池子,昨天一看挂了。如果一面完第2天没有收到2面邀请,基本上不用抱希望了。如果你的bg是985,面试流程也是和我们一样,20多分钟,唯一区别就是面完他们会很快收到二面邮件,而不像我们泡池子然后挂掉
点赞 评论 收藏
分享
看到好多帖子双9都kuku挂,双9都挂,那我还投啥啊
_追梦旅人_:同学考虑我司不,我们正在秋招,可在我主页看岗位,感兴趣可直接投递~
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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