微前端架构如何改变企业的开发模式与效率提升
874
2022-10-10
对比mysql和hive:分组,取不同组前几条记录-explode函数的使用
1、数据源如下
id,name,age,favors(爱好)1,huangxiaoming,45,a-c-d-f2,huangzitao,36,b-c-d-e3,huanglei,41,c-d-e4,liushishi,22,a-d-e5,liudehua,39,e-f-d6,liuyifei,35,a-d-e
2、建表语句
create table mian6( id int, name string, age int, favors string)row format delimited fields terminated by ",";
3、加载数据
load data local inpath "/home/hadoop/apps/mian6.txt" into table mian6;
4、需求如下
求出每种爱好中,年龄最大的两个人(爱好,年龄,姓名)
5、实现步骤如下
1)创建一个表mian6_1,存储使用explode炸裂favors后的结果。
create table mian6_1 asselect m.id id, m.name name, m.age age, m.favors favors, tf.hobby hobbyfrom mian6 mlateral view explode(split(m.favors,"-")) tf as hobby;
explode炸裂favors后的结果如下:
2)查询出,每个兴趣内部的排名(每个兴趣内部,按照age降序排列)。
select m.hobby, m.name name, m.age age, m.favors favors, row_number() over(partition by hobby order by age desc) indexfrom mian6_1 m;
查询结果如下:
3)在第二步的基础上,挑选出每个兴趣内部,排名前二的2条记录。
select a.hobby, a.name, a.age, a.favorsfrom (select m.name name,m.hobby hobby,m.age age,m.favors favors,row_number() over(partition by hobby order by age desc) indexfrom mian6_1 m)awhere a.index<=2;
查询结果如下:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~