注:行转列、列转行入门请参见另一篇文章https://blog.csdn.net/qq_33615604/article/details/122187779
—正文分割线,上代码—
建表语句
create table area
(
province string
,city string
) comment '省份城市表'
;
数据展示
province | city |
---|---|
浙江 | 杭州 |
浙江 | 温州 |
广东 | 广州 |
广东 | 佛山 |
行转列效果
province | citys |
---|---|
浙江 | 杭州,温州 |
广东 | 广州,佛山 |
分析:记录行数变少了,一般是使用了group by进行了聚合操作
代码实操:
select
province
,concat_ws(',', collect_set(city)) as citys
from area
group by province
列转行
建表语句
create table area
(
province string
,citys string
) comment '省份城市表'
;
数据展示
province | citys |
---|---|
浙江 | 杭州,温州 |
广东 | 广州,佛山 |
行转列效果
province | city |
---|---|
浙江 | 杭州 |
浙江 | 温州 |
广东 | 广州 |
广东 | 佛山 |
分析:需要对citys进行展开
代码实操:
select
province
,city
from area lateral view explode(citys) tmp as city;
点赞收藏吧~