第3題 查詢當前薪水詳情以及部門編號dept no

2021-09-11 07:13:21 字數 1978 閱讀 8338

題目描述:

查詢各個部門當前(to_date='9999-01-01')領導當前薪水詳情以及其對應部門編號dept_no

create table `dept_manager` (

`dept_no` char(4) not null,

`emp_no` int(11) not null,

`from_date` date not null,

`to_date` date not null,

primary key (`emp_no`,`dept_no`));

create table `salaries` (

`emp_no` int(11) not null,

`salary` int(11) not null,

`from_date` date not null,

`to_date` date not null,

primary key (`emp_no`,`from_date`));

輸出描述:

emp_no

salary

from_date

to_date

dept_no

10002

72527

2001-08-02

9999-01-01

d001

10004

74057

2001-11-27

9999-01-01

d004

10005

94692

2001-09-09

9999-01-01

d003

10006

43311

2001-08-02

9999-01-01

d002

10010

94409

2001-11-23

9999-01-01

d006

解析思路:

題目總共有兩張表,dept_manager為部門領導表,salaries為領導薪資表,首先可以知道的是,dept_manager表中可能包含了,每個部門的所有領導(包括以往領導和現任領導),而salaries同樣可能包含了,以往員工的薪資和現任在職的員工薪資。而題目中想要查詢出各個部門現任領導的薪資,那麼根據題意知道現任也就是to_date='9999-01-01',那麼只需要先在dept_manager表中查詢to_date='9999-01-01'的領導emp_no(員工編號),也就是查詢出了各個部門當前任職的所有領導資訊,然後我們在拿emp_no對應salaries找出對應薪資,注意這裡還要對salaries表加乙個條件,就是to_date='9999-01-01',因為一名領導可能在公司存在公升職加薪的情況,也就是可能有多條薪資記錄,然而我們要找出的是此時的薪資。

執行sql如下:

select tb1.emp_no, tb1.salary, tb1.from_date, tb1.to_date, tb2.dept_no from salaries tb1 inner join (select emp_no, dept_no from dept_manager where to_date = "9999-01-01") tb2 on tb1.emp_no = tb2.emp_no and tb1.to_date = "9999-01-01";
或者

select tb1.emp_no, tb1.salary, tb1.from_date, tb1.to_date, tb2.dept_no from salaries tb1 inner join  dept_manager tb2 on tb1.emp_no = tb2.emp_no and tb1.to_date = "9999-01-01" and tb2.to_date = "9999-01-01";
這裡使用內連線查詢代替where多表查詢,來避免產生笛卡兒積的效能問題。

3 查詢當前薪水詳情以及部門編號dept no

題目描述 查詢各個部門當前 to date 9999 01 01 領導當前薪水詳情以及其對應部門編號dept no create table dept manager dept no char 4 not null,emp no int 11 not null,from date date not ...

查詢當前薪水詳情以及部門編號dept no

查詢各個部門當前 to date 9999 01 01 領導當前薪水詳情以及其對應部門編號dept no create table dept manager dept no char 4 not null,emp no int 11 not null,from date date not null,...

查詢當前薪水詳情以及部門編號dept no

查詢各個部門當前 to date 9999 01 01 領導當前薪水詳情以及其對應部門編號dept no create table dept manager dept no char 4 not null,emp no int 11 not null,from date date not null,...