Hive窗口函数

Posted guoyu1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive窗口函数相关的知识,希望对你有一定的参考价值。

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窗口函数的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库工具Hive——窗口函数,DML,事务

Hive sql及窗口函数

大数据技术-hive窗口函数详解

Hive学习窗口函数源码阅读

hive函数之~窗口函数与分析函数

Hive常用内置函数窗口函数及自定义函数