背景引入
首先,行转列列转行是数仓工作中还比较常见的问题,通常与Hive中的collect_list``collect_set``explode
等相关知识挂钩。
其次,行转列的sql编写也是面试常考题之一,面试者需要重点关注。
不知道什么是行转列的话,可以看个简陋的例子:
table01:
uid score uid score_list
01 88 >>>>> 01 88,85,92
01 85 >>>>> 02 76,70
01 92
02 76
02 70
模拟数据
with data as (
select "Tom" as uname, "传奇" as gamename, "20240203" as `date` union all
select "Tom" as uname, "英雄联盟" as gamename, "20240203" as `date` union all
select "Jack" as uname, "穿越火线" as gamename, "20240203" as `date` union all
select "Jack" as uname, "穿越火线" as gamename, "20240203" as `date` union all
select "Jack" as uname, "CSGO"