Hive 的排名和跨行 窗口函数及其使用
一、排序&去重分析
row_number() over(partititon by col1 order by col2) as rn
也可以用 row_number() over(distributed by col1 sort by col2) as rn
结果:1,2,3,4
注:对于相同值的记录排名不重复row_number会根据顺序计算
rank() over(partititon by col1 order by col2) as rk
结果:1,2,2,4,5
注:对于相同值的记录rank排名会重复,但总数不变
dense_rank() over(partititon by col1 order by col2) as ds_rk
结果:1,2,2,3,4
注:对于相同值的记录dense_rank排名会重复,总数会减少
select
order_id,
departure_date,
row_number() over(partition by order_id order by departure_date) as rn, -- 直排
rank() over(partition by order_id order by departure_date) as rk, -- 并列的,下一个数字会跳过
dense_rank() over(partition by order_id order by departure_date) as d_rk -- 并列的,下一个数据不会跳过
from ord_test
where order_id=410341346
;
运行结果:

二、跨行获取
lag(col1,n,DEFAULT) over(partition by col1 order by col2) as up
用于统计窗口内往上第n行值,第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)
lead(col1,n,DEFAULT) over(partition by col1 order by col2) as down
用于统计窗口内往下第n行值,第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)
first_value() over(partition by col1 order by col2) as fv
取分组内排序后,截止到当前行,第一个值
last_value() over(partition by col1 order by col2) as lv
取分组内排序后,截止到当前行,最后一个值
select
order_id,
departure_date,
first_value(departure_date) over(partition by order_id order by add_time)as fv, -- 取分组内第一条
last_value(departure_date) over(partition by order_id order by add_time)as lv -- 取分组内最后一条
from ord_test
where order_id=410341346
;
select
order_id,
departure_date,
lead(departure_date,1) over(partition by order_id order by departure_date)as down_1, -- 向下取一级
lag(departure_date,1) over(partition by order_id order by departure_date)as up_1 -- 向上取一级
from ord_test
where order_id=410341346
;
结果截图:


参考:https://www.cnblogs.com/kimbo/p/8445395.html
Hive 的排名和跨行 窗口函数及其使用的更多相关文章
- Hive(十)【窗口函数】
目录 一.定义 窗口函数: 标准聚合函数 分析排名函数 二.语法 (1)窗口函数 over([partition by 字段] [order by 字段] [ 窗口语句]) (2)窗口语句 三.需求练 ...
- Hive 分析函数lead、lag实例应用
Hive的分析函数又叫窗口函数,在oracle中就有这样的分析函数,主要用来做数据统计分析的. Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead) ...
- Hive实战—时间滑动窗口计算
关注公众号:大数据技术派,回复: 资料,领取1024G资料. 目录 时间滑动计算 外部调用实现时间循环 自关联实现滑动时间窗口 扩展基于自然周的的滚动时间窗口计算 总结 时间滑动计算 今天遇到一个需求 ...
- sql视图学习笔记--视图
视图是为用户对数据多种显示需求而创建的,其主要用在一下几种情况: (1)限制用户只能访问特定表特定条件的内容,提高系统的安全性. (2)隐藏表结构.创建多种形式的数透视,满足不同用户需求. (3)将复 ...
- oracle sql 语句 示例
--oracle 用户对象的导入导出 exp devimage/oracle@172.xx.x.xx/TESTDB owner='devimage' file=d:/devimage.dmp log= ...
- SQL面试50题
1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点) SELECT a.s_id,a.s_score FROM (') as a INNER JOIN (') as b on ...
- 【MySQL 基础】MySQ LeetCode
MySQL LeetCode 175. 组合两个表 题目描述 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+----- ...
- Hive中的窗口函数
简介 本文主要介绍hive中的窗口函数.hive中的窗口函数和sql中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析 概念 我们都知道在sql中有一类函数叫做聚合函数,例如su ...
- 【hive】分组求排名
分组求排名 相信好多使用Mysql的用户一定对分组求排名的需求感到发怵. 但是在hive或者oracle来说就能简单实现. 采用窗口函数:rank() over() / row_number() ov ...
随机推荐
- oracle稳定执行计划(更改)的方法
应用于那些执行计划已经发生了的不好的变更的SQL上(在不改变SQL文本的情况下,改变其执行计划),即便通过创建SQL Profile解决了目标SQL执行计划变更的问题,依然不能保证系统后续执行的SQL ...
- javax.lang.model Implementation Backed by Core Reflection
javax.lang.model Implementation Backed by Core Reflection 1.javax.lang.model: How do I get the type ...
- Python3学习之路~5.7 Json & pickle 模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- 001-RLE算法
一.定义 RLE全称(run-length encoding),翻译为游程编码,又译行程长度编码,又称变动长度编码法(run coding),在控制论中对于二值图像而言是一种编码方法,对连续的黑.白像 ...
- win7 64位共享打印机
故障一 链接的电脑提示需要密码 处理步聚:取消win7共享计算机上网络的密码保护共享 1.查看网上邻居链接局域网的网络的网络防火墙设置. 2.更改链接局域网的网络的防火墙的更改高级共设置. 3.关闭链 ...
- 在Linux直接运行安卓程序
Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情. 方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的. 谷歌在很早之前提出了archon的方案,能够直接 ...
- 遇到CloudFlare邮箱混淆,如何解密?
<script type="text/javascript">$(function() { $(".__cf_email__").each(func ...
- MySQL数据类型--与MySQL零距离接触2-5字符型
CHAR(5) : 存储abc时,由于长度不够,所以abc后面会补充2个空格,也就是abc CHAR 0-255字节 定长字符串 VARCHAR 0-65535 字节 变长字符串 ENUM('valu ...
- linux神器strace
man strace: strace - trace system calls and signals DESCRIPTION In the simplest case strace runs the ...
- jmeter BeanShell断言(一)
原文地址https://blog.csdn.net/lijing742180/article/details/81157947 原文地址https://blog.csdn.net/zailushang ...