hive窗口函数

hive之开窗函数

谁说我不能喝 提交于 2019-11-29 00:39:11
开窗函数结构: 分析函数+窗口子句 窗口子句 over(partition by ** order by ** rows between ** and **) 其中between ** and ** 之间可以填 起始 结束 解释 unbounded preceding current row 从第一行到当前行,这是默认的情况 3 preceding current row 从向前3行到当前行 3 preceding 3 following 当前行,向前3行,向后3行 current row unbounded following 从当前行到后面 分析函数包括 分析函数 用法 sum(列名) 有order by 的时候,计算的是分区排序后一个个叠加的值,不加order by 则为分区内的综合 min(列名)、max(列名)、avg(列名) 与order by 有关 count(列名) 与order by 有关 row_number() 从1开始,按照顺序生成分组内记录的序列1,2,3,4,5. rank() 生成数据项在分组内的排名,排名相等会在名次中留下空位 1,2,3,3,5 ,先order by dense_rank() 生成数据项在分组内的排名,排名相等不会在名次中留下空位 1,2,3,3,4,先order by ntile(n) 将分组数据按照顺序切分成n片,返回当前切片值

Hive 开窗函数

若如初见. 提交于 2019-11-28 18:29:02
转自: https://blog.csdn.net/wangpei1949/article/details/81437574 开窗函数 普通的聚合函数聚合的行集是组,开窗函数聚合的行集是窗口。因此,普通的聚合函数每组(Group by)只返回一个值,而开窗函数则可为窗口中的每行都返回一个值。简单理解,就是对查询的结果多出一列,这一列可以是聚合值,也可以是排序值。 开窗函数一般分为两类,聚合开窗函数和排序开窗函数。 测试数据 -- 建表 create table student_scores( id int, studentId int, language int, math int, english int, classId string, departmentId string ); -- 写入数据 insert into table student_scores values (1,111,68,69,90,'class1','department1'), (2,112,73,80,96,'class1','department1'), (3,113,90,74,75,'class1','department1'), (4,114,89,94,93,'class1','department1'), (5,115,99,93,89,'class1','department1'),

Hive笔记6(2) ### 排序 重点

青春壹個敷衍的年華 提交于 2019-11-27 03:58:57
6.5 排序 6.5.1全局排序(Order by) Order By 全局排序,一个Reducer 1,使用Oerder by 子句排序 ASC(ascend) : 升序(默认) DESC(descend):降序 2,ORDER BY 子句在SELECT语句的结尾 3,案例实操: (1)查询员工信息按工资升序排序 select * from emp order by sal; (2)查询员工信息按工资降序排序 select * from emp order by sal desc 6.5.2 按照别名排序 按照员工薪水的2倍排序 select ename, sal * 2 twosal from emp order by twosal; 6.5.3 多个列排序 按照部门和工资升序排序 select ename, deptno, sal from emp order by deptno, sal; 6.5.4 每个MapReduce内部排序(Sort By) Sort By:每个Reduce内部进行排序,对全局结果集来说不是排序 1.设置:reduce个数 set mapreduce.job.reduces = 3; 2.查看设置reduce个数 set mapreduce.job.reduces; 3.根据部门编号降序查询员工信息 select * from emp sort