SQL題練習(xí)

SQL語法總結(jié):http://www.w3school.com.cn/sql/sql_func_min.asp
SQL練習(xí):https://www.nowcoder.com/ta/sql

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 * FROM employees WHERE hire_date = (SELECT MAX(hire_date) FROM employees)

SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1


2.

查找入職員工時(shí)間排名倒數(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));

LIMIT m,n : 表示從第m+1條開始,取n條數(shù)據(jù);
LIMIT n : 表示從第0條開始,取n條數(shù)據(jù),是limit(0,n)的縮寫。

SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,1


3.

查找各個(gè)部門當(dāng)前(to_date='9999-01-01')領(lǐng)導(dǎo)當(dāng)前薪水詳情以及其對(duì)應(yīng)部門編號(hào)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));

SELECT s.*, dept_no
FROM salaries s 
INNER JOIN dept_manager d
ON d.emp_no = s.emp_no 
WHERE s.to_date = '9999-01-01'
AND d.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));

SELECT e.last_name, e.first_name, d.dept_no 
FROM dept_emp d, employees e
WHERE d.emp_no = e.emp_no


5.

查找所有員工的last_name和first_name以及對(duì)應(yīng)部門編號(hào)dept_no,也包括展示沒有分配具體部門的員工
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));

SELECT e.last_name, e.first_name, d.dept_no
FROM employees e
LEFT JOIN dept_emp d
ON e.emp_no = d.emp_no

6.查找所有員工入職時(shí)候的薪水情況

查找所有員工入職時(shí)候的薪水情況,給出emp_no以及salary, 并按照emp_no進(jìn)行逆序
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 e.emp_no, s.salary
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
AND hire_date = from_date
ORDER BY e.emp_no DESC

查找薪水漲幅超過15次的員工號(hào)emp_no以及其對(duì)應(yīng)的漲幅次數(shù)t
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));

HAVING用于對(duì)聚合結(jié)果做限制。這里有一個(gè)錯(cuò)誤,漲薪大于15次,那么t應(yīng)該>16。

SELECT emp_no, COUNT(*) AS t
FROM salaries s
GROUP BY emp_no
HAVING t > 15

找出所有員工當(dāng)前(to_date='9999-01-01')具體的薪水salary情況,對(duì)于相同的薪水只顯示一次,并按照逆序顯示
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 DISTINCT salary
FROM salaries
WHERE to_date = '9999-01-01'
ORDER BY salary DESC




.查找employees表

查找employees表所有emp_no為奇數(shù),且last_name不為Mary的員工信息,并按照hire_date逆序排列
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 * 
FROM employees
WHERE emp_no % 2 != 0
AND last_name != 'Mary'
ORDER BY hire_date DESC
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,638評(píng)論 18 399
  • MySQL5.6從零開始學(xué) 第一章 初始mysql 1.1數(shù)據(jù)庫(kù)基礎(chǔ) 數(shù)據(jù)庫(kù)是由一批數(shù)據(jù)構(gòu)成的有序的集合,這些數(shù)據(jù)...
    星期四晚八點(diǎn)閱讀 1,228評(píng)論 0 4
  • 數(shù)據(jù)庫(kù)概述: 數(shù)據(jù)庫(kù)(DataBase,DB):指長(zhǎng)期保存在計(jì)算機(jī)的存儲(chǔ)設(shè)備上,按照一定規(guī)則組織起來,可以被各種用...
    字節(jié)碼閱讀 644評(píng)論 0 0
  • 大型健康公益類節(jié)目《超級(jí)診療室》自從2015年7月7日在每周二晚21:15分黃金時(shí)間亮相安徽衛(wèi)視以來,受到了社會(huì)...
    旅游資訊閱讀 754評(píng)論 0 51
  • 什么是HTTP Headers HTTP是“Hypertext Transfer Protocol”的所寫,整個(gè)萬...
    蘇文星閱讀 2,746評(píng)論 0 4

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