編輯 ·
· 我的收藏
本頁目錄
lateral view和split,explode等udtf一起使用,它能夠將一行資料拆成多行資料,並在此基礎上對拆分後的資料進行聚合。
語法定義如下:
lateralview: lateral view [outer] udtf(expression) tablealias as columnalias (',' columnalias) * fromclause: from basetable (lateralview)*
說明如下:
示例如下:
假設我們有一張表pageads,它有兩列資料,第一列是pageid string,第二列是adid_list,即用逗號分隔的廣告id集合。
string pageid
arrayadid_list
「front_page」
[1, 2, 3]
「contact_page」
[3, 4, 5]
需求是要統計所有廣告id在所有頁面**現的次數,實現過程如下所示。
拆分廣告id,如下所示:
select pageid, adid
from pageads lateral view explode(adid_list) adtable as adid;
執行結果如下:
string pageid
int adid
「front_page」
1「front_page」
2「front_page」
3「contact_page」
3「contact_page」
4「contact_page」
5進行聚合的統計,語句如下:
select adid, count(1)
from pageads lateral view explode(adid_list) adtable as adid
group by adid;
執行結果如下:
int adid
count(1)11
2132
4151
乙個from語句後可以跟多個lateral view語句,後面的lateral view語句能夠引用它前面的所有表和列名。
以下面的表為例:
arraycol1
arraycol2
[1, 2]
[「a」, 「b」, 「c」]
[3, 4]
[「d」, 「e」, 「f」]
Oracle String 合併與拆分
oracle 10g及以上版本 長字串拆分成多行,利用正規表示式,功能類似於split select dbms lob.substr regexp substr abc,1234,abcd,test 1,x.n field from dual,select rownum n from dual co...
Oracle 行列轉換(行合併與拆分)
在 oracle 中,將某乙個欄位的多行資料轉換成使用逗號風格的一行顯示,可以使用函式 wmsys.wm concat 達成。中也介紹到。參考這一段 case 1 列轉換行。以一行顯示所有員工的名字 select wmsys.wm concat name from employee 結果 user1...
Oracle行列轉換(行合併與拆分)
在 oracle 中,將某乙個欄位的多行資料轉換成使用逗號風格的一行顯示,可以使用函式 wmsys.wm concat 達成。這個在上一篇 中也介紹到。參考這一段 case 1 列轉換行。以一行顯示所有員工的名字 select wmsys.wm concat name from employee 結...