當(dāng)前位置:首頁(yè)>職場(chǎng)>面試題下期解析(如何分析中位數(shù))
發(fā)布時(shí)間:2024-01-24閱讀(15)
學(xué)校每次考試完,都會(huì)有一個(gè)成績(jī)表例如,表中第1行表示編號(hào)為1的用戶選擇了C 崗位,該科目考了11001分,我來(lái)為大家科普一下關(guān)于面試題下期解析?以下內(nèi)容希望對(duì)你有幫助!

面試題下期解析
學(xué)校每次考試完,都會(huì)有一個(gè)成績(jī)表。例如,表中第1行表示編號(hào)為1的用戶選擇了C 崗位,該科目考了11001分。
問(wèn)題:寫(xiě)一個(gè)sql語(yǔ)句查詢每個(gè)崗位的中位數(shù)位置的范圍,并且按崗位升序排序,結(jié)果如下:
解釋:
第1行表示C 崗位的中位數(shù)位置范圍為[2,2],也就是2。因?yàn)镃 崗位總共3個(gè)人,是奇數(shù),所以中位數(shù)位置為2。
第2行表示Java崗位的中位數(shù)位置范圍為[1,2]。因?yàn)镴ava崗位總共2個(gè)人,是偶數(shù),所以要知道中位數(shù),需要知道2個(gè)位置的數(shù)字,而因?yàn)橹挥?個(gè)人,所以中位數(shù)位置為[1,2]。
第3行表示前端崗位的中位數(shù)位置范圍為[2,2],也就是2。因?yàn)榍岸藣徫豢偣?個(gè)人,是奇數(shù),所以中位數(shù)位置為2。
【解題步驟】
1.要求每個(gè)崗位的中位數(shù)位置的范圍,需要知道每個(gè)崗位的總數(shù)
那么,如何求每個(gè)崗位的總數(shù)呢?
看到“每個(gè)”,要想到《猴子 從零學(xué)會(huì)SQL》里講過(guò)的,用分組匯總解決這類型問(wèn)題。按崗位分組(group by),使用匯總函數(shù)count()得到崗位總數(shù)。
1 select 崗位,count(*) as 總數(shù)2 from 成績(jī)表3 group by 崗位;
2.崗位總數(shù)又分為奇數(shù)和偶數(shù)兩種情況。
崗位數(shù)有奇數(shù)也有偶數(shù),需要分情況進(jìn)行計(jì)算,可以使用case表達(dá)式。
如何判斷奇偶呢?我們可以使用%或mod函數(shù)。
奇數(shù),就是除以2的余數(shù)為1,可以用下面兩種方法表示
(1) 總數(shù) % 2 = 1
(2) mod(總數(shù),2) = 1
偶數(shù),就是除以2的余數(shù)為0,可以用下面兩種方法表示
(1) 總數(shù) % 2 = 0
(2) mod(總數(shù),2) = 0
再結(jié)合求中位數(shù)起始位置的關(guān)系,使用case表達(dá)式:
而case表達(dá)式中的總數(shù)是由前面使用第1步count()函數(shù)計(jì)算出來(lái)的,所以第1步要先于case語(yǔ)句運(yùn)行,因?yàn)橐训?步的sql作為子查詢。
1 select 崗位,2 (case when 總數(shù) % 2 = 1 then (總數(shù) 1)/2 else 總數(shù)/2 end) as 起始位置,3 (case when 總數(shù) % 2 = 1 then (總數(shù) 1)/2 else 總數(shù)/2 1 end) as 結(jié)束位置4 from5 (select 崗位,count(*) as 總數(shù)6 from 成績(jī)表7 group by 崗位) as t;
最后按崗位升序排序,用排序子句(order by)
1 select 崗位, 2 (case when 總數(shù) % 2 = 1 then (總數(shù) 1)/2 else 總數(shù)/2 end) as 起始位置,3 (case when 總數(shù) % 2 = 1 then (總數(shù) 1)/2 else 總數(shù)/2 1 end) as 結(jié)束位置4 from5 (select 崗位,count(*) as 總數(shù)6 from 成績(jī)表7 group by 崗位) as t8 order by 崗位;
【本題考點(diǎn)】
1.考察如何將復(fù)雜問(wèn)題拆解為簡(jiǎn)單問(wèn)題,可以使用多維度拆解分析方法,例如本案例中問(wèn)題拆解問(wèn)3步:
1)將中位數(shù)位置用公式表示出來(lái)
2)計(jì)算出每個(gè)崗位的總數(shù)
2)分情況統(tǒng)計(jì)總數(shù)的奇數(shù)、偶數(shù)
2.如何用%或mod函數(shù)判斷奇偶
3.每個(gè)問(wèn)題,要想到分組匯總來(lái)解決
4.多條件判斷問(wèn)題,要想到用case表達(dá)式
5.考查sql的運(yùn)行順序和子查詢
【舉一反三】
以下是某班同學(xué)的科目成績(jī)表,查詢每門(mén)科目的中位數(shù)位置的范圍,并且按科目升序排序。
1 select 科目,2 (case when 總數(shù) % 2 = 1 then (總數(shù) 1)/2 else 總數(shù)/2 end) as 起始位置,3 (case when 總數(shù) % 2 = 1 then (總數(shù) 1)/2 else 總數(shù)/2 1 end) as 結(jié)束位置4 from5 (select 科目,count(*) as 總數(shù)6 from 科目成績(jī)表7 group by 科目) as t8 order by 科目;
第1行表示數(shù)學(xué)科目的中位數(shù)位置范圍為[2,2],也就是2。因?yàn)閿?shù)學(xué)科目總共3個(gè)人,是奇數(shù),所以中位數(shù)位置為2。
第2行表示語(yǔ)文科目的中位數(shù)位置范圍為[2,3]。因?yàn)镴ava崗位總共4個(gè)人,是偶數(shù),所以要知道中位數(shù),需要知道2個(gè)位置的數(shù)字,而因?yàn)橹挥?個(gè)人,所以中位數(shù)位置為[2,3]。
推薦:如何從零學(xué)會(huì)sql?
歡迎分享轉(zhuǎn)載→http://m.avcorse.com/read-241816.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號(hào)-5 TXT地圖HTML地圖XML地圖