码迷,mamicode.com
首页 > 其他好文 > 详细

Hive窗口函数

时间:2020-02-13 17:21:11      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:窗口函数   博客   format   导入数据   name   weixin   技术   info   图片   

1、row_number over():分组排序+序号标记

  假如我们有这样一组数据,我们需要求出不同性别的年龄top2的人的信息。这个时候怎么做?可能我们会首先想到分组,但是分组只能值top1,怎么样能求出top2,top3呢?这时候我们想如果分组后能够按照年龄排序然后标出来序号就好了!

id   age  name sex

1,18,xiaoli,male
2,19,wang,male
3,22,liu,female
4,16,dawei,male
5,30,erbao,male
6,26,xiao,female
7,18,chengua,male

比如以上求解不同性别的年龄top2,我们可以这样做:

建表导入数据:

create table rownumber(id string,age int,name string,sex string)
row format delimited
fields terminated by ‘,‘;
load data local inpath ‘/root/mytest/rowover.dat‘ into table rownumber;

技术图片

 select id,age,name,sex,
row_number() over(partition by sex order by age desc) as rownumber
from rownumber;

技术图片

可以清楚的看到 row_number() over(partition by sex order by age desc) as rownumber

就相当于增加了一列序号,over()中partition by sex是按照sex分组,order by age desc按照年龄降序排序,然后row_number()在加上序号。

select id,age,name,sex
from
(select id,age,name,sex,
row_number() over(partition by sex order by age desc) as rownumber
from rownumber ) temp
where rownumber<3;

技术图片

 

 

 

 

 

转载博客:https://blog.csdn.net/weixin_39043567/article/details/90612526

Hive窗口函数

标签:窗口函数   博客   format   导入数据   name   weixin   技术   info   图片   

原文地址:https://www.cnblogs.com/guoyu1/p/12303969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!