每日一题:SQL之行转列和列转行

Python学习与数据挖掘

共 1686字,需浏览 4分钟

 ·

2021-12-25 21:48

每日一题 精选常考面试题,将其汇总成专栏,利用零碎时间为职业保驾护航,建议大家独立思考答题。
题目
数据集
+---+----------+|id |login_date|+---+----------+|01 |2021-02-28||01 |2021-03-01||01 |2021-03-02||01 |2021-03-04||01 |2021-03-05||01 |2021-03-06||01 |2021-03-08||02 |2021-03-01||02 |2021-03-02||02 |2021-03-03||02 |2021-03-06||03 |2021-03-06|+---+----------+
以"连续登录"中的数据为例:
select id,        concat_ws(',',collect_list(login_date)) cwfrom datagroup by id;
结果
+---+----------------------------------------------------------------------------+|id |cw                                                                          |+---+----------------------------------------------------------------------------+|01 |2018-02-28,2018-03-01,2018-03-02,2018-03-04,2018-03-05,2018-03-06,2018-03-08||02 |2018-03-01,2018-03-02,2018-03-03,2018-03-06                                 ||03 |2018-03-06                                                                  |+---+----------------------------------------------------------------------------+

以上面SQL生成的数据为基准,执行下列SQL:

select id, login_datefrom t lateral  view explode(split(cw,','))  b AS login_date;

结果

+---+----------+|id |login_date|+---+----------+|01 |2018-02-28||01 |2018-03-01||01 |2018-03-02||01 |2018-03-04||01 |2018-03-05||01 |2018-03-06||01 |2018-03-08||02 |2018-03-01||02 |2018-03-02||02 |2018-03-03||02 |2018-03-06||03 |2018-03-06|+---+----------+
为更好的交流学习,应读者的要求,我建立了一个交流群,有需要的同学可以在下方公众号后台回复关键字:面试,即可获取快速通道。

(长按三秒,即可进入)


后台已放置一份精心整理的技术干货,查看即可获取!
后台回复关键字:面试,带你进入高手如云的学习交流群!

推荐阅读

浏览 49
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报