Hive刷题——explode关于数据扩充与收缩
有以下数据
select explode(array(2, 3, 4)) num; 结果 num 2 3 4
需求1、数据扩充:
输出结果如下所示:
4 1,4,3,2 3 1,3,2 2 1,2
参考实现
select t.num,concat_ws(',',collect_set(cast(t1.rn as string))) lists from (select explode(array(2, 3, 4, 5)) num) t join (select row_number() over () rn from (select split(space(4), '') x) t lateral view explode(x) t as pe) t1 on 1 > 0 where t.num >= t1.rn group by t.num order by 1 desc;
需求2、数据扩充时剔除偶数:
期望输出结果
5 4,2 4 4,2 3 2 2 2
参考实现
select num, concat_ws(',', collect_set(cast(rn as string))) list_nmum from (select * from (select explode(array(2, 3, 4,5)) num) t join (select row_number() over () as rn from (select split(space(4), '') as x) t lateral view explode(x) t as pe) b on 1 > 0 where t.num >= b.rn and b.rn % 2 = 0 order by t.num, b.rn desc) t group by num order by 1 desc;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2022-02-07 hive 取中位数的两种方式