最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

4道面試題,測測你的SQL能力是否達標!

2022-04-20 10:54 作者:愛數(shù)據(jù)分析社區(qū)  | 我要投稿

來? 源:小小的SQL學習筆記/作? 者:小小


熟練SQL技能

是招聘數(shù)據(jù)分析的硬性要求


SQL面試如何考?

必考題型有哪些?
今天通過4道SQL面試題

測測你的SQL能力是否達標!


01

寫出下面語句的實際執(zhí)行順序:

①?SELECT?[DISTINCT]?
②?FROM
③?WHERE
④?GROUP?BY
⑤?HAVING
⑥?UNION
⑦?ORDER?BY


解題思路:

SQL子句邏輯執(zhí)行順序:From → Where ?→ Group by → Having → Select → Distinct → Union → Order by


02

如下為某公司8月份的員工薪資表。請根據(jù)各小題的需求,用代碼實現(xiàn)。



問1:輸出第一個名字(First_name)包含‘o’的所有雇員信息,并按薪資降序排列;


參考代碼:


問2:輸出總支出工資大于1500000 的部門和對應的支出,按降序排序。


參考代碼:


03

題干:現(xiàn)數(shù)據(jù)庫中有如下兩張表,一張為員工信息表,一張為員工獎金表。請根據(jù)各小題的輸出結(jié)果,用一句SQL語句進行查詢。



問1:輸出First_name中包含o的所有雇員信息,并按薪資降序排列。


輸出結(jié)果如下:


解析:

本小題主要考察的是like的模糊查詢,以及order by排序的用法,考核的是大家對基礎知識的掌握。


參考答案:

select?*
from?Employee
where?First_name?like?'%o%'
order?by?Salary?desc;


問2:輸出每月的總支出工資大于1500000的部門和對應的支出,按降序排序。


輸出結(jié)果如下:


解析:

本小題主要考察的是having與where的區(qū)別及使用,having和where都是條件篩選,但是where的執(zhí)行順序是在from之后,group by之前的,而having是在這三者之后,并且是在聚合函數(shù)之后,所以本題可以直接使用having來進行條件的篩選,當然也可以使用子查詢,再使用where進行條件的篩選


參考答案:

select?Department?as?dept_name,
?????sum(salary)?as?tatol_salary
from?Employee
group?by?Department
having?sum(salary)>1500000
order?by?tatol_salary?desc;


04

不同城市、不同性別,2019年支付金額最高的 TOP 10用戶(使用user_info 用戶信息表;user_order 用戶訂單表)。



解題思路


Step1:在訂單信息表中,每一個用戶可以重復下單,所以在這里可以先得到每一個用戶在2019年的總支付金額;


SELECT??user_id
???????,sum(pay_amount)?pay_amount
FROM?user_trade
WHERE?year(dt)=2019
GROUP?BY?user_id


Step2:接著通過公共字段 user_id將用戶訂單表和用戶信息表進行關(guān)聯(lián),獲得包含城市、性別的寬表,然后再通過窗口函數(shù)row_number對不同城市,不同性別的用戶進行排名標記;


SELECT???a.user_name,
?????????b.city,
?????????b.sex,
?????????a.pay_amount,
?????????row_number()?over(partition?by?b.city,b.sex?order?by?a.pay_amount?desc)?rank
FROM(SELECT??user_id
?????????????,sum(pay_amount)?pay_amount
??????FROM?user_order???
??????WHERE?year(dt)=2019
??????GROUP?BY?user_id)a
LEFT?JOIN?user_info?b?on?a.user_id?=?b.user_id


Step3:最后通過嵌套一個子查詢,使用where子句作為篩選條件,篩選出Top10的用戶即可;


--?4.每個城市、不同性別,2019年支付金額最高的TOP10用戶?--
SELECT??c.user_name,
????????c.city,
????????c.sex,
????????c.pay_amount,
????????c.rank
FROM(SELECT???a.user_name,
??????????????b.city,
??????????????b.sex,
??????????????a.pay_amount,
??????????????row_number()?over(partition?by?b.city,b.sex?order?by?a.pay_amount?desc)?rank
??????FROM
??????(SELECT??user_id
???????????????,sum(pay_amount)?pay_amount
??????FROM?user_order???
??????WHERE?year(dt)=2019
??????GROUP?BY?user_id)a
??????LEFT?JOIN?user_info?b?on?a.user_id?=?b.user_id)c
WHERE?c.rank<=10;



面試SQL會有哪些題型?

第一種:構(gòu)建表結(jié)構(gòu)

面試官會給你一個業(yè)務場景,你認為需要建幾張表,每張表的結(jié)構(gòu)字段是什么,表跟表之間的關(guān)聯(lián)關(guān)系是什么?

這種問題他主要考察你對于業(yè)務的理解,構(gòu)建表結(jié)構(gòu)的一個能力。最基本的局部建表,包括外建、主建等等。


第二種:多表聯(lián)查

給你幾張表,讓你進行復雜查詢的實現(xiàn)。

這個主要針對多表多列字段進行嵌套,子查詢等。


第三種:窗口函數(shù)

主要有三種,聚合開窗函數(shù)、排序開窗函數(shù)、同列錯位開窗函數(shù)。


  • 聚合開窗函數(shù):

函數(shù)名如果是聚合函數(shù),則成為聚合開窗函數(shù)

語法:聚合函數(shù)(列) over(partition by 列 order by 列)

常見的聚合函數(shù)有:sum()、count()、average()、max()、min()


  • 排序開窗函數(shù):

row_number(行號)

rank(排名)

dense_rank(密集排名)

ntile(分組排名)


(ps:排序面試題會遇到很多,并且工作中也經(jīng)常寫。)


  • 同列錯位開窗函數(shù),就是移動位置這樣的題目。

lag(col,n):用于統(tǒng)計窗口內(nèi)往上第n行值。

lead(col,n):用于統(tǒng)計窗口內(nèi)往下第n行值。


福利時間到!

  • 關(guān)注公眾號【小小的SQL學習筆記】,后臺回復【50】即可領取《MySQL經(jīng)典50題》~

《MySQL經(jīng)典50題》部分內(nèi)容


- END -


4道面試題,測測你的SQL能力是否達標!的評論 (共 條)

分享到微博請遵守國家法律
南京市| 汶上县| 临沂市| 宝坻区| 翁牛特旗| 油尖旺区| 金塔县| 余庆县| 梧州市| 临沭县| 长兴县| 中西区| 杭锦旗| 曲靖市| 岳阳市| 宣城市| 北川| 海丰县| 望江县| 射阳县| 温泉县| 兴文县| 宿松县| 日照市| 湛江市| 额济纳旗| 兴安县| 海原县| 清镇市| 景宁| 星子县| 大埔区| 靖远县| 永嘉县| 宜兰县| 柳州市| 阿荣旗| 九龙坡区| 新宾| 湾仔区| 和硕县|