一、排序&去重分析

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 的排名和跨行 窗口函数及其使用的更多相关文章

  1. Hive(十)【窗口函数】

    目录 一.定义 窗口函数: 标准聚合函数 分析排名函数 二.语法 (1)窗口函数 over([partition by 字段] [order by 字段] [ 窗口语句]) (2)窗口语句 三.需求练 ...

  2. Hive 分析函数lead、lag实例应用

    Hive的分析函数又叫窗口函数,在oracle中就有这样的分析函数,主要用来做数据统计分析的. Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead) ...

  3. Hive实战—时间滑动窗口计算

    关注公众号:大数据技术派,回复: 资料,领取1024G资料. 目录 时间滑动计算 外部调用实现时间循环 自关联实现滑动时间窗口 扩展基于自然周的的滚动时间窗口计算 总结 时间滑动计算 今天遇到一个需求 ...

  4. sql视图学习笔记--视图

    视图是为用户对数据多种显示需求而创建的,其主要用在一下几种情况: (1)限制用户只能访问特定表特定条件的内容,提高系统的安全性. (2)隐藏表结构.创建多种形式的数透视,满足不同用户需求. (3)将复 ...

  5. oracle sql 语句 示例

    --oracle 用户对象的导入导出 exp devimage/oracle@172.xx.x.xx/TESTDB owner='devimage' file=d:/devimage.dmp log= ...

  6. SQL面试50题

    1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点) SELECT a.s_id,a.s_score FROM (') as a INNER JOIN (') as b on ...

  7. 【MySQL 基础】MySQ LeetCode

    MySQL LeetCode 175. 组合两个表 题目描述 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+----- ...

  8. Hive中的窗口函数

    简介 本文主要介绍hive中的窗口函数.hive中的窗口函数和sql中的窗口函数相类似,都是用来做一些数据分析类的工作,一般用于olap分析 概念 我们都知道在sql中有一类函数叫做聚合函数,例如su ...

  9. 【hive】分组求排名

    分组求排名 相信好多使用Mysql的用户一定对分组求排名的需求感到发怵. 但是在hive或者oracle来说就能简单实现. 采用窗口函数:rank() over() / row_number() ov ...

随机推荐

  1. Web项目开发中常见安全问题防范

    本文章纯粹是个人收藏,其中各种也是略略了解,下面直接贴出知识点./捂脸/捂脸 计算机程序主要就是输入/输出,安全问题由此产生,凡是有输入的地方都可能带来安全风险.根据输入的数据类型,web应用主要有数 ...

  2. EC2(elastic compute cloud,弹性计算云,又称EC2实例)

    (一)定义:EC2和实例EC2(elastic compute cloud,弹性计算云),即云中的虚拟服务器. 是用于在云中创建和运行虚拟机的 Amazon Web 服务.简言之,EC2就是一部具有无 ...

  3. windows版本下ELK配置

    windows版本的es和kibana相对配置起来很简单,网上已经有很多例子都是正确的,只需按照步骤安装一下即可. 主要logstash,网上说的方案,大都不能配置成功,或者总有一些错误,下面把我自己 ...

  4. IIS下实现帝国CMS搜索页伪静态

    前面ytkah讲了apache下帝国CMS搜索页伪静态实现方法,网友说服务器是用IIS,那么IIS下如何实现帝国CMS搜索页伪静态呢?首先得先有URL重写插件,下载地址:http://www.iis. ...

  5. docker+jenkins的构建历史记录(Build History)时间不正确

    1.分别查看宿主机时间和容器时间 宿主机时间 root@fcaad17f146a:/# date Fri Jan :: CST 容器时间 [root@ ~]# docker exec -ti 8798 ...

  6. 安装setuptools

    1.下载地址:https://pypi.python.org/pypi/setuptools 2.这是一个压缩文件,将其解压到安装目录,并进入该文件夹,按住shift键后,在文件夹空白处点击鼠标右键, ...

  7. python进制转换及变量

    .编译型语言和解释型语言的区别? 答: () 编译型语言:是将所有源码编译完成二进制后才进行输出,运行快,执行效率高,时间周期长. ()解释型语言:逐行编译输出,执行效率相对慢,开发效率高, .Pyt ...

  8. mysql数据具体操作

    1.建表操作 前面提到的是简单的建表,这里需要提到一下外键. create table userinfo2( id int auto_increment primary key, name ), ge ...

  9. iOS 元件组件-创建静态库static library

    概述 在项目开发的过程中,经常使用静态库文件.例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节. 库是一些没有mai ...

  10. MVC5 您不能调用控制器“xx”上的操作方法“xx”,因为该方法是一种泛型方法

    在 MVC5 中当使用   routes.MapMvcAttributeRoutes() 添加路由属性是导致在控制器创建的泛型方法调用错误: Cannot call action method 'Sy ...