Sql(presto语法) 实现行转列和列转行
生活随笔
收集整理的這篇文章主要介紹了
Sql(presto语法) 实现行转列和列转行
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里的行列轉換都是在presto語法下可編譯實現(hive、sql會有一些差別)
Sql語句:數據行轉列(表a-to-表b)和 列轉行(表b-to-表a)
?
1.行轉列(sql語句)
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.列轉行(sql語句)
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
說明:這兩個行轉列和列轉行都是 presto實現,親自測試正確
?
??
???????
總結
以上是生活随笔為你收集整理的Sql(presto语法) 实现行转列和列转行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对多旅行商问题:应用、方法和分类进行了全
- 下一篇: 100天精通Python(可视化篇)——