美文网首页
SQL简单面试题:查询每个部门工资最高的前10位员工

SQL简单面试题:查询每个部门工资最高的前10位员工

作者: cef802fb1136 | 来源:发表于2020-01-14 14:55 被阅读0次

    前段时间同事突然甩了一个SQL面试题给我,题目是需要查询每个部门工资最高的前10位员工。想着查每个部门的最高还好,用max语句就可以搞定,这是要取前十。。。。

    快速构建了一下思路,查了一下有没有类似的语法可以解决。

    思路:
    • 查询每个部门工资最高的员工
    • 这样的员工取每个部门的前10个
    • 按照部门、工资排序
    准备数据:
    CREATE DATABASE company;
    
    CREATE TABLE `employee`(
    `empno` INT(32) NOT NULL AUTO_INCREMENT,
    `department` VARCHAR(64),
    `salary` DOUBLE(10,2),
    PRIMARY KEY(`empno`);
    
    INSERT INTO EMPLOYEE(`department`,`salary`) VALUES
    ('B',16000.00),('B',19000.00),('A',10000.00),('A',11000.00),('A',12000.00),('B',13000.00),('B',14000.00),('D',24000.00),('D',25000.00),('B',18000.00),
    ('C',7000.00),('A',13000.00),('A',14000.00),('A',16000.00),('C',5000.00),('A',16000.00),('A',17000.00),('A',18000.00),('A',19000.00),('B',17000.00),
    ('B',10000.00),('B',11000.00),('B',12000.00),('B',15000.00),('D',26000.00),('D',26000.00),('D',27000.00),('B',15500.00),('B',16000.00),
    ('D',20000.00),('D',21000.00),('D',25500.00),('C',2000.00),('C',3000.00),('C',4000.00),('D',28000.00),('D',29000.00),('D',30000.00),('C',6000.00),
    ('C',1000.00),('C',1100.00),('D',22000.00),('D',23000.00),('C',5500.00),('C',6000.00),('C',8000.00),('C',9000.00),('A',15000.00),('A',15500.00);
    
    具体的SQL查询语句:
    select
        a.department as '部门',
        a.id as '员工工号',
        a.salary as '薪资'
    from employee a where (
                            select count(1) from employee b 
                        where b.salary > a.salary and a.department = b.department) < 10
    order by a.department,a.id
    

    相关文章

      网友评论

          本文标题:SQL简单面试题:查询每个部门工资最高的前10位员工

          本文链接:https://www.haomeiwen.com/subject/kshaactx.html