题解 | #获取当前薪水第二多的员工的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
    );






全部评论

相关推荐

机械打工仔:第一位颇有孟德之志
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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