SQL語句訓(xùn)練1-5

題目地址
https://www.nowcoder.com/activity/oj

1.題目描述
查找最晚入職員工的所有信息
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));

分兩步,第一步查出最晚入職時間,再通過這個時間選取員工

select max(hire_date) from employees;

select * from employees
where hire_date=
(select max(hire_date) from employees);

2.題目描述
查找入職員工時間排名倒數(shù)第三的員工所有信息
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));

先查出排第三的時間再那這個時間篩選員工

select distinct hire_date from employees order by hire_date desc limit 2,1;

select * from employees 
where hire_date=
(select distinct hire_date from employees order by hire_date desc limit 2,1);

3.題目描述
查找各個部門當(dāng)前(to_date='9999-01-01')領(lǐng)導(dǎo)當(dāng)前薪水詳情以及其對應(yīng)部門編號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));

兩張表內(nèi)連接后把領(lǐng)導(dǎo)查詢出來

select t1.*,dept_no 
from salaries as t1 
inner join dept_manager as t2
on t1.emp_no=t2.emp_no
where t1.to_date='9999-01-01' and t2.to_date='9999-01-01';

4.題目描述
查找所有已經(jīng)分配部門的員工的last_name和first_name
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 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));

兩張表只有一個重復(fù)屬性,可以使用自然連接來操作

select t1.last_name,t1.first_name,t2.dept_no
from employees as t1
natural join dept_emp as t2;

5.查找所有員工的last_name和first_name以及對應(yīng)部門編號dept_no,也包括展示沒有分配具體部門的員工(這題似乎存在問題,dept_no設(shè)置為了not null卻不能使用等值連接來做)
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 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));

假設(shè)dept_no存在null,我們可以使用左連接來操作
內(nèi)左右連接的不同在我博客里有解釋
https://blog.csdn.net/wzngzaixiaomantou/article/details/81807714

select t1.last_name,t1.first_name,t2.dept_no
from employees as t1
left join dept_emp as t2
on t1.emp_no=t2.emp_no;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號usernam...
    落葉寂聊閱讀 1,253評論 0 0
  • SQL語法總結(jié):http://www.w3school.com.cn/sql/sql_func_min.aspSQ...
    Cracks_Yi閱讀 409評論 0 0
  • 1. 了解SQL 1.1 數(shù)據(jù)庫基礎(chǔ) ? 學(xué)習(xí)到目前這個階段,我們就需要以某種方式與數(shù)據(jù)庫打交道。在深入學(xué)習(xí)MyS...
    鋒享前端閱讀 1,330評論 0 1
  • 暗夜里的許多廢話: 1, 有時候需要用一根火柴去點亮那些星星。 2, 口渴止于一杯水,而非一片海洋。 3, 一件事...
    馬唐閱讀 193評論 0 1
  • 二貨夫婦出去玩,二貨哥一上地鐵就低頭玩手機。 二貨媳婦郁悶地跟他說:“你女人就坐在身邊,你卻只顧玩手機,你覺得合適...
    老羅xt閱讀 395評論 0 4

友情鏈接更多精彩內(nèi)容