練習SQL利器掰曾,牛客網SQL實戰(zhàn)題庫停团,25~32題

25.獲取員工其當前的薪水比其manager當前薪水還高的相關信息

題目描述:
獲取員工其當前的薪水比其manager當前薪水還高的相關信息旷坦,當前表示to_date='9999-01-01',
結果第一列給出員工的emp_no掏熬,
第二列給出其manager的manager_no,
第三列給出該員工當前的薪水emp_salary,
第四列給該員工對應的manager當前的薪水manager_salary
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 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))

考慮過程:
①提取de.emp_no,de.dept_no,s.salary獲得一個員工薪水表
②提取dm.emp_no,dm.dept_no,s.salary獲得一個經理薪水表
③合并INNER JOIN獲得一個目標薪水表
④選出員工薪水大于經理的列

SELECT emp_s.emp_no,mar_s.emp_no AS manager_no,emp_s.salary AS emp_salary,mar_s.salary AS manager_salary
FROM (SELECT de.emp_no,de.dept_no,s.salary
     FROM dept_emp de,salaries s
     WHERE de.emp_no=s.emp_no
     AND de.to_date='9999-01-01'
     AND s.to_date='9999-01-01') AS emp_s
INNER JOIN (SELECT dm.emp_no,dm.dept_no,s.salary
           FROM dept_manager dm,salaries s
           WHERE dm.emp_no=s.emp_no
           AND dm.to_date='9999-01-01'
           AND s.to_date='9999-01-01') AS mar_s
ON emp_s.dept_no=mar_s.dept_no
WHERE emp_s.salary > mar_s.salary

26.匯總各個部門的當前員工title類型的分配數目

題目描述:
匯總各個部門當前員工的title類型的分配數目秒梅,結果給出部門編號dept_no旗芬、dept_name、其當前員工所有的title以及該類型title對應的數目count
CREATE TABLE departments (
dept_no char(4) NOT NULL,
dept_name varchar(40) NOT NULL,
PRIMARY KEY (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 IF NOT EXISTS titles (
emp_no int(11) NOT NULL,
title varchar(50) NOT NULL,
from_date date NOT NULL,
to_date date DEFAULT NULL);

解題思路:
①這是一個三表連接加上分組的問題
②先將titles和dept_emp連接捆蜀,然后將departments 填進去
③講dept_no和title分組統(tǒng)計

SELECT dept.dept_no, dp.dept_name, t.title, COUNT(t.title) AS count
FROM titles AS t INNER JOIN dept_emp AS dept 
ON t.emp_no = dept.emp_no AND dept.to_date = '9999-01-01' AND t.to_date = '9999-01-01'
INNER JOIN departments AS dp 
ON dept.dept_no = dp.dept_no
GROUP BY dept.dept_no, t.title

27.給出每個員工每年薪水漲幅超過5000的員工

題目描述:
給出每個員工每年薪水漲幅超過5000的員工編號emp_no疮丛、薪水變更開始日期from_date以及薪水漲幅值salary_growth,并按照salary_growth逆序排列辆它。
提示:在sqlite中獲取datetime時間對應的年份函數為strftime('%Y', to_date)
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));

參考高贊答案誊薄,自己編寫的發(fā)生了未知錯誤。


image.png

28.查找描述信息中包括robot的電影對應的分類名稱以及電影數目锰茉,而且還需要該分類對應電影數量>=5部

題目描述:
題目描述與編寫信息在此
誰能讓我看看數據長啥樣啊~~

image.png

29.使用join查詢方式找出沒有分類的電影id以及名稱

題目描述與編寫信息在此
解題思路:兩種方法
①第一種呢蔫,連接表之后用NOT IN
②第二種,識別分類id是NULL

SELECT f.film_id,f.title
FROM film f LEFT JOIN film_category fc
ON f.film_id = fc.film_id
WHERE f.film_id NOT IN (SELECT film_id FROM film_category);



SELECT f.film_id, f.title FROM film f LEFT JOIN film_category fc
ON f.film_id = fc.film_id WHERE fc.category_id IS NULL

30.使用子查詢的方式找出屬于Action分類的所有電影對應的title,description

題目描述與編寫信息在此

SELECT f.title, f.description
FROM film f INNER JOIN film_category fc
ON f.film_id = fc.film_id
WHERE fc.category_id IN (SELECT category_id FROM category
                        WHERE name="Action")

31.獲取select * from employees對應的執(zhí)行計劃

EXPLAIN SELECT * FROM employees

可以使用 "EXPLAIN" 關鍵字或 "EXPLAIN QUERY PLAN" 短語飒筑,用于描述表的細節(jié)片吊。
SQLite Explain

32.將employees表的所有員工的last_name和first_name拼接起來作為Name

題目描述:
將employees表的所有員工的last_name和first_name拼接起來作為Name,中間以一個空格區(qū)分
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 last_name||" "||first_name AS Name
FROM employees

注:有些版本還可以用CONCAT

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末扬霜,一起剝皮案震驚了整個濱河市定鸟,隨后出現的幾起案子,更是在濱河造成了極大的恐慌著瓶,老刑警劉巖联予,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異材原,居然都是意外死亡沸久,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門余蟹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卷胯,“玉大人,你說我怎么就攤上這事威酒∫ふ觯” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵葵孤,是天一觀的道長担钮。 經常有香客問我,道長尤仍,這世上最難降的妖魔是什么箫津? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上苏遥,老公的妹妹穿的比我還像新娘饼拍。我一直安慰自己,他們只是感情好田炭,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布师抄。 她就那樣靜靜地躺著,像睡著了一般诫肠。 火紅的嫁衣襯著肌膚如雪司澎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天栋豫,我揣著相機與錄音,去河邊找鬼谚殊。 笑死丧鸯,一個胖子當著我的面吹牛,可吹牛的內容都是我干的嫩絮。 我是一名探鬼主播丛肢,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼剿干!你這毒婦竟也來了蜂怎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤置尔,失蹤者是張志新(化名)和其女友劉穎杠步,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體榜轿,經...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡幽歼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了谬盐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甸私。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖飞傀,靈堂內的尸體忽然破棺而出皇型,到底是詐尸還是另有隱情,我是刑警寧澤砸烦,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布弃鸦,位于F島的核電站,受9級特大地震影響外冀,放射性物質發(fā)生泄漏寡键。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望西轩。 院中可真熱鬧员舵,春花似錦、人聲如沸藕畔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽注服。三九已至韭邓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溶弟,已是汗流浹背女淑。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辜御,地道東北人鸭你。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像擒权,于是被迫代替她去往敵國和親袱巨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內容