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

hiveSQL常見面試題

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

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

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

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


場景一:分組求TopN

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


(表-1)


好像把小編的數(shù)學(xué)成績暴露了,現(xiàn)在需要求每一門科目,成績排名前兩名的同學(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對象分組、排序的記過,為每一行分組記錄返回一個序號,該序號從1開始,依次遞增,遇到新組則重新從1開始。也就是說,該函數(shù)計算的值表示每組內(nèi)部排序后的順序編號。

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


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

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


(表-3)


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


(表-4)


使用hive實現(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, 因為select后有幾個字段,最終輸出就是幾個字段,所以我們需要把目標(biāo)數(shù)據(jù)的”math”和“english”兩個字段想辦法得出來。


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

聚合函數(shù)可以不用,所以我們在外面套一層sum做聚合,這樣得到sum的結(jié)果和單人得分結(jié)果是一致的,因為我們以name做了一遍聚合,而每個用戶對一門課程只有一個成績,所以這樣就可以得到最終結(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ù)將其爆炸開,給生成的臨時側(cè)視圖一個名字,取名a并給列名取名為item,score,因為explode(map)爆炸的結(jié)果是每一個item為行,key為1列,value為1列,這樣就恰好形成我們想要的結(jié)果。這個示例理解起來稍微有點難度,大家不熟悉這些函數(shù)的用法的話,可以首先熟悉一下。


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

標(biāo)簽: hive
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接