Hive中的简单窗口函数应用(TOPN)
来源:互联网 发布:我的世界ipad枪械js 编辑:程序博客网 时间:2024/05/17 23:22
窗口函数:lead lag FIRST_VALUE
分析函数: RANK ROW_NUMBER
TOPN
row number
说明:
row_number() over ([partition col1] [order by col2])
rank() over ([partition col1] [order by col2])
dense_rank() over ([partition col1] [order by col2])
它们都是根据col1字段分组,然后对col2字段进行排序,对排序后的每行生成一个行号,这个行号从1开始递增
col1、col2都可以是多个字段,用‘,‘分隔
区别:
1)row_number:不管col2字段的值是否相等,行号一直递增,比如:有两条记录的值相等,但一个是第一,一个是第二
2)rank:上下两条记录的col2相等时,记录的行号是一样的,但下一个col2值的行号递增N(N是重复的次数),比如:有两条并列第一,下一个是第三,没有第二
3)dense_rank:上下两条记录的col2相等时,下一个col2值的行号递增1,比如:有两条并列第一,下一个是第二
select empname,empjob,salary,deptno,row_number() over(partition by deptno order by salary desc ) rank from emp;
//测试原数据Hive TopNachinese98aenglish90amath90dchinese88cenglish82cmath98bmath79bchinese79benglish79zenglish90zmath89zchinese80emath99eenglish87denglish90create table t(name string, sub string, score int) row format delimited fields terminated by '\t';load data local inpath "/home/user01/grades.txt" into table t;
- 为每个学生的各门功课成绩排名
1、row_numberselect *,row_number() over (partition by name order by score desc) as rank from t;
- .rank //排序字段相同的记录使用相同的排名,下一个从值的行号递增N(N是重复的次数),比如:有两条并列第一,下一个是第三,没有第二
select *,rank() over (partition by name order by score asc) as rank from t;
3、dense_rank //排序字段相同的记录使用相同的排名,下一个值的行号递增1,如下:a的english和math并列第一,下一个chinese是第三,没有第二,b的三门都一样
select *,dense_rank() over (partition by name order by score asc) as rank from t;
业务实例:
统计每个学科的前二名
select * from (select *, row_number() over(partition by name order by score desc) as rank from t )t where rank <=2;select *,row_number() over () as rank from t rank <=3;
select area, barnd, yuan, row_number() over (partition by area order by yuan desc) as rank from order where rank <=3;
各地区热门商品统计
按地区 分组 再按各个商品的销量进行降序排名
北京 iphone7 70000 1
北京 xiaomi5 60000 2
北京 mate9 50000 3
北京 手机膜 40000 4
…
上海 xiaomi5 70000 1
上海 iphone7 60000 2
上海 mate9 50000 3
上海 手机膜 40000 4
..
- Hive中的简单窗口函数应用(TOPN)
- Hive中的简单窗口函数应用
- Hive TopN+分组TopN
- Hive TopN+分组TopN
- HIVE 窗口及分析函数 应用场景
- HIVE 窗口及分析函数 应用场景
- HIVE 窗口及分析函数 应用场景
- HIVE 窗口及分析函数 应用场景
- hive 分组topN
- hive中的时间函数具体应用
- hive中的分析函数的典型应用
- hive 窗口函数 应用场景与实战详解
- Hive 窗口函数(Windowing Functions)
- HIVE窗口函数
- Hive窗口函数
- Hive窗口函数总结
- Hive窗口函数
- Hive 窗口函数
- c++11:智能指针之weak_ptr
- 基于okhttp和RxJava封装的自动重连的WebSocket
- Java循环打印数组
- 二分查找
- Runtime类
- Hive中的简单窗口函数应用(TOPN)
- 面试OR笔试44——实现智能指针
- [NOIP2017模拟]树
- uva 10600 次小生成树
- CSS position 属性
- 9-23面试
- 设计模式-迭代器模式
- Matlab中,一种用脚本自动配置Simulink模型设置的方法
- strcmp()字符串比较函数