【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...