SQL牛客網刷題(四) 24題解析

2021-10-08 09:50:05 字數 1899 閱讀 6919

【sql24. 獲取所有非manager員工當前的薪水情況】

題目描述:

獲取所有非manager員工當前的薪水情況,給出dept_no、emp_no以及salary ,當前表示to_date='9999-01-01'

create table `dept_emp` (

`emp_no` int(11) not null,

`dept_no` char(4) not null,

`from_date` date not null,

`to_date` date not null,

primary key (`emp_no`,`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 `employees` (

`emp_no` int(11) not null,

`birth_date` date not null,

`first_name` varchar(14) not null,

`last_name` varchar(16) not null,

`gender` char(1) not null,

`hire_date` date not null,

primary key (`emp_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`));

先放**:

select de.dept_no, de.emp_no ,salary

from dept_emp as de join employees as e

on de.emp_no = e.emp_no

join salaries as s

on de.emp_no = s.emp_no

where s.to_date = '9999-01-01' and de.emp_no not in

(select emp_no from dept_manager);

思路:

這道題是「較難」難度,也確實難度開始慢慢上來了,這道題中有四個表,我們先需要將dept_emp表分別和salaries和employees做inner join的鏈結並篩選出to_date為'9999-01-01'對應的資料,也就是下面**的步驟:

select de.dept_no, de.emp_no ,salary

from dept_emp as de join employees as e

on de.emp_no = e.emp_no

join salaries as s

on de.emp_no = s.emp_no

where s.to_date = '9999-01-01'

接下來我們還要過濾到是manager的員工,很自然的就會想到not in,當然not in之後不能直接跟第四張表dept_manager,需要先將該錶的emp_no欄位查詢處理,跟在not in之後。

以上,歡迎指正。

SQL牛客網刷題(二) 4 19 20題解析

sql4.查詢所有已經分配部門的員工的last name和first name以及dept no 題目描述 查詢所有已經分配部門的員工的last name和first name以及dept no 請注意輸出描述裡各個列的前後順序 create table dept emp emp no int 11...

牛客網日刷30題錯題解析

1.已知一棵完全二叉樹的第 6層 設根為第 1層 有 8個葉結點,則該完全二叉樹的結點個數最多是 我選的是39,正確答案為111。錯點在於我理解的該樹深度為6的情況,忽略了深度為7的情況,其實第六層有8個葉子結點,此樹的深度為6或7,題目問最多,說明是指深度為7的情況,該情況下第六層為滿層即32個結...

牛客網SQL刷題41 50

create table if not exists titles test id int 11 not null primary key,emp no int 11 not null,title varchar 50 not null,from date date not null,to date...