[Hive_10] Hive 的分析函数
0. 说明
Hive 的分析函数 窗口函数 | 排名函数 | 最大值 | 分层次 | lead && lag 统计活跃用户 | cume_dist
1. 窗口函数(开窗函数) over
1.1 说明
1 preceding //前一个
1 following //后一个
current row //当前行
unbounded preceding //无上限
unbounded following //无下限
1.2 测试
# 以行定义窗口界限
select id, name, age , sum(age)over(order by id rows between current row and 2 following) from user_par; # 以值定义窗口界限
select id, name, age , sum(age)over(order by age range between current row and 10 following) from user_par;
2. 排名函数
2.1 并列跳跃
113
rank
select id, name, province, age , rank()over(partition by province order by age desc) from user_par;
2.2 不跳跃
112
dense_rank
select id, name, province, age , dense_rank()over(partition by province order by age desc) from user_par;
2.3 顺序
123
row_number
select id, name, province, age , row_number()over(partition by province order by age desc) from user_par;
3. 最大值
first_value()
select id, name, province, age , first_value()over(partition by province order by age desc) from user_par;
4. 分层次
按照三六九等进行平均分层
ntile()
select id, name, age , ntile(3)over(order by age desc) from user_par;
5. lead && lag
5.1 lead()
将列向上提
select id, name, province, age , lead(age)over(partition by province order by age asc) from user_par;
5.2 lag()
将列向下沉
select id, name, province, age , lag(age)over(partition by province order by age asc) from user_par;
5.3 统计连续活跃
1. 准备数据

2. 建表
create table active(id string, month int)
row format delimited
fields terminated by '\t';
3. 加载数据
load data local inpath '/home/centos/files/active.txt' into table active;
4. 统计连续两月活跃用户
select id from (select id, month, lead(month)over(partition by id order by month desc) as month2 from active)a where month=month2+1;
6. cume_dist()
指定值占总数的百分比
Demo
select id,name,age, cume_dist()over(order by age desc) from user_nopar;

[Hive_10] Hive 的分析函数的更多相关文章
- hive窗口函数/分析函数详细剖析
hive窗口函数/分析函数 在sql中有一类函数叫做聚合函数,例如sum().avg().max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的.但是有时 ...
- hive中分析函数window子句
hive中有些分析函数功能确实很强大,在和sum,max等聚合函数结合起来能实现不少功能. 直接上代码演示吧 原始数据 channel1 2016-11-10 1 channel1 2016-11-1 ...
- Hive 窗口分析函数
1.窗口函数 1.LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值 ...
- Hive之分析函数
目录 一.sum() over(partition by) 二.avg().min().max() over(partition) 三.row_number() over(partition by) ...
- Hive的分析函数的使用
原文: https://www.toutiao.com/i6769120000578945544/?group_id=6769120000578945544 我们先准备数据库.表和数据 开窗分析函数相 ...
- Hive Ntile分析函数学习
NTILE(n) 用于将分组数据按照顺序切分成n片,返回当前记录所在的切片值 NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid O ...
- Hive—简单窗口分析函数
hive 窗口分析函数 : jdbc:hive2:> select * from t_access; +----------------+---------------------------- ...
- Hive 分析函数lead、lag实例应用
Hive的分析函数又叫窗口函数,在oracle中就有这样的分析函数,主要用来做数据统计分析的. Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead) ...
- Hive简记
在大数据工作中难免遇到数据仓库(OLAP)架构,以及通过Hive SQL简化分布式计算的场景.所以想通过这篇博客对Hive使用有一个大致总结,希望道友多多指教! 摘要: 1.Hive安装 2.Hive ...
随机推荐
- for循环中变量的作用域问题
看下面这一行代码 for (let i = 0; i < 3; i++) { let i = 'abc' console.log(i) } // abc // abc // abc 从上面可以看 ...
- Java——static关键字
前言 static关键字算是Java中比较复杂的关键字之一,它可以修饰变量.方法.类以及代码块.下面将介绍static的具体使用. static引入的目的 static的作用 static修饰变量 s ...
- Redis基础认识及常用命令使用(一)--技术流ken
Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集 ...
- Python模块之time、datetime
python内置模块系列(一):time模块与datetime time模块是python内置查看当前时间戳的一个模块 一 time 1 获得时间戳 时间戳:通常来说,时间戳表示的是从1970年1月1 ...
- AngularJs_自定义注入对象_笔记1
A-自定义控件示例: 我的自定义控件文件为:angular-seagull2-common.js (function (window, angular) { 'use strict'; $urlPro ...
- js绑定下拉框
---恢复内容开始--- 方法一 js-ajax部分 function GetDListOfCt() { $.ajax({ url: "../../Ajax/Boss_Show.ashx?t ...
- SqlServer中循环和条件语句
if语句使用示例 declare @a int set @a=12 if @a>100 begin ...
- 【WebSocket No.3】使用WebSocket协议来做服务器
写在开始 上面一篇写了一篇使用WebSocket做客户端,然后服务端是socke代码实现的.传送门:webSocket和Socket实现聊天群发 本来我是打算写到一章上的,毕竟实现的都是一样的功能,后 ...
- mysql常用操作小节
比如要将表user 中的字段 username修改为 name: ); 其他关于表字段信息的修改: 1.添加字段:给表 user 添加字段 password 在 id 后面; ) NOT NULL A ...
- Netty实战五之ByteBuf
网络数据的基本单位总是字节,Java NIO 提供了ByteBuffer作为它的字节容器,但是其过于复杂且繁琐. Netty的ByteBuffer替代品是ByteBuf,一个强大的实现,即解决了JDK ...