亚洲日本欧美日韩高观看,性高湖久久久久久久久,亚洲av成人噜噜无码网站,亚洲欧美日韩国产一区二区动图,亚洲欧美日韩国产精品一区二区


學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

hiveSQL常見面試題

來源:北大青鳥總部 2023年01月03日 14:27

摘要: 分享一些常見hiveSQL的面試場(chǎng)景,希望能夠幫到你。最后祝大家今后的面試成功喲!

小編前幾天去面試了一個(gè)大數(shù)據(jù)分析的崗位,學(xué)習(xí)了幾個(gè)月信心滿滿的小編被無情的面試教育了,被教育的不是一些高深的算法理論,而是一些hiveSQL。

這些題小編真不是不會(huì),場(chǎng)景都非常熟悉,但就是容易忘。今天小編整理了一點(diǎn)常用場(chǎng)景的hiveSQL,很可能就能在面試中幫到你。


場(chǎng)景一:分組求TopN

先看數(shù)據(jù):


(表-1)


好像把小編的數(shù)學(xué)成績(jī)暴露了,現(xiàn)在需要求每一門科目,成績(jī)排名前兩名的同學(xué)。

使用HiveSQL常用的方式為:

Select * from table,

row_number() over(partition by item order by score desc) rank

where rank<=2;

輸出結(jié)果為:


(表-2)


解析:row_number()函數(shù)基于over對(duì)象分組、排序的記過,為每一行分組記錄返回一個(gè)序號(hào),該序號(hào)從1開始,依次遞增,遇到新組則重新從1開始。也就是說,該函數(shù)計(jì)算的值表示每組內(nèi)部排序后的順序編號(hào)。

然后在語句中加入限制條件rank<=2來篩選具體選取top幾。從最終的結(jié)果可以看出,語文成績(jī)考試前兩名的同學(xué)分別是建國(guó)和小編、數(shù)學(xué)成績(jī)排名前兩名的同學(xué)分別是建國(guó)和狗剩。


場(chǎng)景二:行轉(zhuǎn)列/列轉(zhuǎn)行

數(shù)據(jù)如下:


(表-3)


現(xiàn)在需要轉(zhuǎn)換為


(表-4)


使用hive實(shí)現(xiàn)需求的話,可以使用:

Select

name,

sum(case when item=數(shù)學(xué) then score end) as math,

sum(case when item=英語 then score end) as english,

From table

Group by name

解析:首先寫出select name from table group by name, 因?yàn)閟elect后有幾個(gè)字段,最終輸出就是幾個(gè)字段,所以我們需要把目標(biāo)數(shù)據(jù)的”math”和“english”兩個(gè)字段想辦法得出來。


之后可以對(duì)item字段所有枚舉的結(jié)果進(jìn)行case when判斷,將score填值進(jìn)入,因?yàn)樽詈笪覀冃枰獙?duì)name做一下聚合,需要明確的是一般選取字段一定要出現(xiàn)在groupby里面。

聚合函數(shù)可以不用,所以我們?cè)谕饷嫣滓粚觭um做聚合,這樣得到sum的結(jié)果和單人得分結(jié)果是一致的,因?yàn)槲覀円詎ame做了一遍聚合,而每個(gè)用戶對(duì)一門課程只有一個(gè)成績(jī),所以這樣就可以得到最終結(jié)果。

那么最后如果需要將“表-4”的內(nèi)容轉(zhuǎn)換為“表-3”的內(nèi)容應(yīng)該怎么做呢?

一種比較好的方式是這樣:

select table_4.name,

a.item,

a.score

from table_4

lateral view explode(

str_to_map(concat('math=',math,'&english=',english),'&','=')

) a as item,score;

解析:首先使用str_to_map函數(shù)將math字段與english字段拼接后的結(jié)果轉(zhuǎn)換為map類型,然后通過側(cè)視圖和explode函數(shù)將其爆炸開,給生成的臨時(shí)側(cè)視圖一個(gè)名字,取名a并給列名取名為item,score,因?yàn)閑xplode(map)爆炸的結(jié)果是每一個(gè)item為行,key為1列,value為1列,這樣就恰好形成我們想要的結(jié)果。這個(gè)示例理解起來稍微有點(diǎn)難度,大家不熟悉這些函數(shù)的用法的話,可以首先熟悉一下。


這些是一部分常見hiveSQL的面試場(chǎng)景,希望能夠幫到你。最后祝大家今后的面試成功喲!

標(biāo)簽: hive
報(bào)名優(yōu)惠
免費(fèi)試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接