首页 > 试题广场 >

给出各部门工资第二高的雇员名字、工资及所在部门

[编程题]给出各部门工资第二高的雇员名字、工资及所在部门
  • 热度指数:20 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
数据库

雇员表Employee

Id

Name

Salary

DepartmentId

1

Mandy

10000

1

2

Henry

21000

2

3

Tom

15000

2

4

Mike

20000

1

部门表Department

Id

Name

1

Sale A

2

Sale B

给出各部门工资第二高的雇员名字、工资及所在部门

ps: sqlite的in 语法中暂不支持>=2个字段同时in

--雇员表

CREATE TABLE E(

ID NUMBER(5),

NAME VARCHAR(10),

SALARY NUMBER(10),

DEPARTMENTID NUMBER(5)

);

INSERT INTO E VALUES(1,'MANDY',10000,1);

INSERT INTO E VALUES(2,'HENRY',21000,2);

INSERT INTO E VALUES(3,'TOM',15000,2);

INSERT INTO E VALUES(4,'MIKE',20000,1);

SELECT * FROM E;

--部门表

CREATE TABLE D(

ID NUMBER(5),

NAME VARCHAR(10)

);

INSERT INTO D VALUES(1,'SALEA');

INSERT INTO D VALUES(2,'SALEB');

SELECT * FROM D;

--各部门工资第二高的雇员名字、工资及所在部门

SELECT ENAME

      ,SALARY

      ,DNAME

  FROM

       (

         SELECT E.NAME AS ENAME

               ,E.SALARY

               ,D.NAME AS DNAME,

                DENSE_RANK() OVER(PARTITION BY DEPARTMENTID ORDER BY SALARY) AS RANKING

           FROM E E

           JOIN D D 

             ON E.DEPARTMENTID = D.ID)

          WHERE RANKING = 2;





发表于 2022-09-21 16:45:09 回复(0)