国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

面試被經(jīng)常問的SQL窗口函數(shù)!

2023-08-30 07:16 作者:猴子數(shù)據(jù)分析  | 我要投稿



【面試題】


有一張“學(xué)生成績表”,包含4個(gè)字段:班級id、學(xué)生id、課程id、成績。

問題1:求出每個(gè)學(xué)生成績最高的三條記錄

問題2:找出每門課程都高于班級課程平均分的學(xué)生


【解題步驟】


1. topN問題


問題1是常見的排名問題(topN問題),要想到用《猴子從零學(xué)會SQL》里講過的窗口函數(shù)來解決這類業(yè)務(wù)問題。


用窗口函數(shù)獲取順序有三種:rank(),dense_rank()和row_number()。


同樣是按“值”從小到大排序,三者的區(qū)別如下:



根據(jù)問題的描述,我們應(yīng)該使用dense_rank窗戶函數(shù)


查詢結(jié)果:


2. 匯總分析


問題2要求找出每門課程都高于班級課程平均分的學(xué)生,可以拆解成以下幾個(gè)問題:


1)求出每個(gè)班級,每門課程的平均分


2)將學(xué)生每門課程的成績與所在班級的對應(yīng)課程平均分相減,結(jié)果大于0就說明該學(xué)生的這門成績高于課程平均分


3)“找出每門課程都高于班級課程平均分的學(xué)生”說明對于學(xué)生來說,最小的“相減結(jié)果”都是大于0的


首先用匯總分析求出每個(gè)班級,每門課程的平均分。

查詢結(jié)果:


3. 多表聯(lián)結(jié)


涉及到多表查詢,需要用到多表聯(lián)結(jié)。


這里目的是為了將“將學(xué)生每門課程的成績與所在班級的對應(yīng)課程平均分相減”。


所以,是將原始的“學(xué)生成績表”與“班級的課程平均分”進(jìn)行聯(lián)結(jié)。


為了保持左表“學(xué)生成績表”的所有數(shù)據(jù),將所有學(xué)生的成績都與“課程平均分”x相減,所以選擇“左聯(lián)結(jié)(left join)”。



最后使用分組匯總,并結(jié)合having條件篩選出“相減結(jié)果的最小值大于0”的學(xué)生。

【本題考點(diǎn)】


1.考查對分組匯總的了解,以及靈活使用來解決業(yè)務(wù)問題;


2.考查對多表聯(lián)結(jié)的了解,以及靈活使用來解決業(yè)務(wù)問題;


3)考查對窗口函數(shù)的了解,窗戶函數(shù)解決的經(jīng)典問題就那么幾種,記下來,就可以解決99%的業(yè)務(wù)問題。



面試被經(jīng)常問的SQL窗口函數(shù)!的評論 (共 條)

分享到微博請遵守國家法律
噶尔县| 定结县| 蚌埠市| 怀仁县| 峨眉山市| 中江县| 屏边| 德江县| 蒙山县| 丰都县| 邵阳县| 扬州市| 黎城县| 呼图壁县| 千阳县| 抚顺市| 外汇| 青神县| 东阿县| 上杭县| 佛教| 神池县| 昌都县| 南郑县| 临颍县| 广宁县| 浑源县| 西充县| 马尔康县| 乌兰察布市| 信阳市| 靖州| 浦城县| 乌恰县| 兴义市| 商都县| 南华县| 乐业县| 开原市| 灌云县| 安龙县|