hive开窗函数over(partition by ......)用法
一、over(partition by ......)主要和聚合函数sum()、count()、avg()等结合使用,实现分组聚合的功能
示列:根据day_id日期和mac_id机器码进行聚合分组求每一天的该机器的销量和即sum_num,hive sql语句:select day_id,mac_id,mac_color,day_num,sum(day_num)over(partition by day_id,mac_id order by day_id) sum_num from test_temp_mac_id;
注:day_id,mac_id,mac_color,day_num为查询原有数据,sum_num为计算结果
day_id | mac_id | mac_color | day_num | sum_num |
20171011 | 1292 | 金色 | 1 | 89 |
20171011 | 1292 | 金色 | 14 | 89 |
20171011 | 1292 | 金色 | 2 | 89 |
20171011 | 1292 | 金色 | 11 | 89 |
20171011 | 1292 | 黑色 | 2 | 89 |
20171011 | 1292 | 粉金 | 58 | 89 |
20171011 | 1292 | 金色 | 1 | 89 |
20171011 | 2013 | 金色 | 10 | 22 |
20171011 | 2013 | 金色 | 9 | 22 |
20171011 | 2013 | 金色 | 2 | 22 |
20171011 | 2013 | 金色 | 1 | 22 |
20171012 | 1292 | 金色 | 5 | 18 |
20171012 | 1292 | 金色 | 7 | 18 |
20171012 | 1292 | 金色 | 5 | 18 |
20171012 | 1292 | 粉金 | 1 | 18 |
20171012 | 2013 | 粉金 | 1 | 7 |
20171012 | 2013 | 金色 | 6 | 7 |
20171013 | 1292 | 黑色 | 1 | 1 |
20171013 | 2013 | 粉金 | 2 | 2 |
20171011 | 12460 | 茶花金 | 1 | 1 |
二、over(partition by ......)与group by 区别
如果用group by实现一中根据day_id日期和mac_id机器码进行聚合分组求每一天的该机器的销量和即sum_num,
则hive sql语句为:select day_id,mac_id,sum(day_num) sum_num from test_temp_mac_id group by day_id,mac_id order by day_id;结果如下表
注:我们可以观察到group by可以实现同样的分组聚合功能,但sql语句不能写与分组聚合无关的字段,否则会报错,即group by 与over(partition by ......)主要区别为,带上group by的hive sql语句只能显示与分组聚合相关的字段,而带上over(partition by ......)的hive sql语句能显示所有字段.。
day_id | mac_id | sum_num |
20171011 | 124609 | 1 |
20171011 | 20130 | 22 |
20171011 | 12922 | 89 |
20171012 | 12922 | 18 |
20171012 | 20130 | 7 |
20171013 | 12922 | 1 |
20171013 | 20130 | 2 |
https://blog.csdn.net/qq_37325859/article/details/78222712
hive开窗函数over(partition by ......)用法的更多相关文章
- 1.hive开窗函数,分析函数
http://yugouai.iteye.com/blog/1908121 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行.开窗函数指 ...
- Week08_day01 (Hive开窗函数 row_number()的使用 (求出所有薪水前两名的部门))
数据准备: 7369,SMITH,CLERK,7902,1980-12-17,800,null,20 7499,ALLEN,SALESMAN,7698,1981-02-20,1600,300,30 7 ...
- Hive开窗函数的理解
1.从一个sql语句开始 select id,sum(price) over(partition by id order by price desc) from books; sum作为聚合函数的时候 ...
- oracle 高级用法, DECODE 排序, OVER(PARTITION BY X ORDER BY Y DESC) 开窗函数
场景 01 (IN 语句 排序 decode() 函数): 1,我们在查询中会经常使用这样的用法, select * from table_name t where t.id in (1, 3, 7, ...
- over(partition by)开窗函数的使用
开窗函数是分析函数中的一种,开窗函数与聚合函数的区别是:开窗函数是用于计算基于组的某种聚合值且每个的组的聚合计算结果可以有多行,而聚合函数每个组的聚合计算结果只有一个.使用开窗函数可以在没有group ...
- sql server ,OVER(PARTITION BY)函数用法,开窗函数,over子句,over开窗函数
https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx https://social.msdn.microsoft.c ...
- hive常用函数 wordCount--Hive窗口函数1.1.1 聚合开窗函数聚合开窗函数实战
第三天笔记 第三天笔记 SQL练习Hive 常用函数关系运算数值计算条件函数日期函数重点!!!字符串函数Hive 中的wordCount1.1 Hive窗口函数1.1.1 聚合开窗函数聚合开窗函数实战 ...
- SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数
Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下: ...
- hive SQL 初学者题目,实战题目 字符串函数,日期拼接,开窗函数。。。。
sql:Hive实现按照指定格式输出每七天的消费平均数输出格式:2018-06-01~2018-06-07 12.29...2018-08-10~2018-08-16 80.67 答案:-- 1.先将 ...
随机推荐
- 【转】cve2014-3153 漏洞之详细分析与利用
背景学习: Linux Futex的设计与实现 使用者角度看bionic pthread_mutex和linux futex实现 By kernux TopSec α-lab 一 漏洞概述 这个漏洞是 ...
- kthread_create与kernel_thread的区别【栈】
转自:http://blog.chinaunix.net/uid-25513153-id-2888903.html kthread_create与kernel_thread的区别 kernel thr ...
- scrapy模拟知乎登录(无验证码机制)
---恢复内容开始--- spiders 文件夹下新建zhihu.py文件(从dos窗口中进入虚拟环境,再进入工程目录之后输入命令 scrapy genspider zhihu www.zhihu.c ...
- 几个很好的OJ网站
很友好的OJ网站(OJ是open judge,在线评测) POJ 北京大学ACM ZOJ 浙江大学ACM WOJ 武汉大学ACM(一个题目提交通过后,可以查看通过该题的所有代码) 唯一不好的地方是题 ...
- java设计模式之实现对象池模式示例分享
http://www.jb51.net/article/46941.htm 对象池模式经常用在频繁创建.销毁对象,且对象创建.销毁开销很大的场景,比如数据库连接池.线程池.任务队列池等.本代码简单,没 ...
- Solidity 文档--第二章:安装 Solidity
安装Solidity 基于浏览器的Solidity 如果你只是想尝试一个使用Solidity的小合约,你不需要安装任何东西,只要访问基于浏览器的Solidity. 如果你想离线使用,你可以保存页面到本 ...
- Android Studio查看类中所有方法和属性
ctrl+f3效果: alt+7效果: 注意区别:虽然所有方法都有,但是顺序自己一看效果便知.一个是根据类中的顺序,另一个是根据a-z的开头字母顺序. 百度查了一下快捷键是ctrl+f12.但是自己试 ...
- 操作Image,封装的方法
using System; using System.Collections; using System.IO; using System.Drawing; using System.Drawing. ...
- HDU 2552 三足鼎立(数学函数)
/* <耶律javac++>欲找出三人所在逐个击破, 现在他发现威士忌的位置s,天外来客的位置u, 不过很难探查到亦纷菲v所在何处,只能知道三人满足关系: arctan(1/s) = ar ...
- Spring Struts里用到的设计模式
Bean工厂的Factory模式 AOP的Proxy模式