Sql(presto语法) 实现行转列和列转行
這里的行列轉(zhuǎn)換都是在presto語(yǔ)法下可編譯實(shí)現(xiàn)(hive、sql會(huì)有一些差別)
Sql語(yǔ)句:數(shù)據(jù)行轉(zhuǎn)列(表a-to-表b)和 列轉(zhuǎn)行(表b-to-表a)
?
1.行轉(zhuǎn)列(sql語(yǔ)句)
select?country,
SUM(CASE?WHEN?cnt_cut?= ‘(0,20]‘THEN?cnt?ELSE?0?END)?AS?one,
SUM(CASE?WHEN?cnt_cut?=?‘(20,600]’THEN?cnt?ELSE?0?END)?AS?two,
SUM(CASE?WHEN?cnt_cut?=’(600,++]’THEN?cnt?ELSE?0?END)?AS?three
FROM?a
GROUP?BY?country
Result: 表b
?
2.列轉(zhuǎn)行(sql語(yǔ)句)
select b1.country,b2.cut,b2.cnt from b as b1
cross join unnest(
??? ?array[‘one’,’two’,’three’],
???? array[one,two,three]
) b2 (cut,cnt)
?? Result : 表a
說(shuō)明:這兩個(gè)行轉(zhuǎn)列和列轉(zhuǎn)行都是 presto實(shí)現(xiàn),親自測(cè)試正確
?
??
???????
總結(jié)
以上是生活随笔為你收集整理的Sql(presto语法) 实现行转列和列转行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 对多旅行商问题:应用、方法和分类进行了全
- 下一篇: 100天精通Python(可视化篇)——