SQL笔记2:获取每个部门中当前员工薪水最高的员工


前言


具体的SOL问题

获取每个部门中当前员工薪水最高的员工

代码如下:

//法1:使用开窗函数(经典开窗)
select
    t1.dept_no,t1.emp_no,t1.salary
from
    (
        select
            d.dept_no,d.emp_no,s.salary,rank() over(partition by d.dept_no order by s.salary desc) rn
        from
            dept_emp d
        join
            salaries s
        on
            d.emp_no = s.emp_no
    ) t1
where t1.rn = 1;

//方法2:子查询,经典解法
select
    t1.dept_no,t1.emp_no,t1.salary
from
    (
        select
            d.dept_no,d.emp_no,s.salary
        from
            dept_emp d
        join
            salaries s
        on
            d.emp_no = s.emp_no
    ) t1
where
    (
        select
            count(*) cn
        from
            (
                select
                    d.dept_no,d.emp_no,s.salary
                from
                    dept_emp d
                join
                    salaries s
                on
                    d.emp_no = s.emp_no
            ) t2
          where
                t1.dept_no = t2.dept_no
          and
                t1.salary < t2.salary
    ) = 0
order by t1.dept_no;
经验分享 程序员 微信小程序 职场和发展