hive窗口函数求上一条数据_grouping函数

hive窗口函数求上一条数据_grouping函数在Hive中支持窗口函数,Mysql在8.0版本后也支持使用,用好之后犹如开挂! Window Function又称为窗口函数、分析函数。聚合函数可以将多行数据按照规定聚合为一行,一般来讲聚集后的行数

Hive-窗口函数

在Hive中支持窗口函数,Mysql在8.0版本后也支持使用,用好之后犹如开挂!

Window Function又称为窗口函数、分析函数。聚合函数可以将多行数据按照规定聚合为一行,一般来讲聚集后的行数要少于聚集前的行数。但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时便引入了窗口函数。

运行顺序:窗口函数是在select时执行的,位于order by之前。

1. 累计计算窗口函数

语法总结:

sum(A) over(partition by B order by C rows between D1 and D2)

avg(A) over(partition by B order by C rows between D1 and D2)

max(A) over(partition by B order by C rows between D1 and D2)

min(A) over(partition by B order by C rows between D1 and D2)

count(A) over(partition by B order by C rows between D1 and D2)

partition by:相当于分组

order by:按照什么顺序进行累加等。默认升序asc, 降序为desc。

A:需要被加工的字段名称,对指定字段计算

B:分组的字段名称

C:排序的字段名称

D1,D2:计算的行数范围

rows between:也叫window子句

unbounded:无界的

preceding:之前

following:之后

current row:当前行

unbounded preceding:前面的起点

unbounded following:后面的终点

rows between unbounded preceding and current row:之前所有行和本行,不写rows between为默认起点到当前行;

rows between 3 preceding and current row:前3行和本行(共4行);

range between current row and unbounded following:本行和之后的所有行;

rows between current row and 3 following:本行和后面3行(共4行);

rows between 3 preceding and 1 following: 从前3行到下一行(共4行)。

2. 分区排序窗口函数

1. row_number() over(partition by A order by B)

2.            rank() over(partition by A order by B)

3.   desc_rank() over(partition by A order by B)

返回相应规则的排序序号

1. 生成1 2 3 4 5 6 7 8 9 …  : row_number() 查询出来的每一行生成一个序号,依次排序,且不重复

2 .生成1 1 1 4 5 6 7 7 9 …   : rank() 生成的序号相同时,下一个不同的会跳跃,跳跃排序

3. 生成1 1 1 2 3 3 4 5 6…   :desc_rank()生成的序号相同时,下一个不同的不会跳跃,是连续排序

3. 切片:分组排序窗口函数

ntile(n) over(partition by A order by B)

n:切分的片数

A:分组的字段名称

B:排序的字段名称

ntile(n):用于将分组数据按照顺序切分成n片,返回切片值

不支持 rows between…

如果切片不均匀,默认从第一个开始均分,如 5 5 4 4

4. 偏移分析窗口函数

lag:向上偏移  —比如向上偏移2行 实则新行数据由原来的行整体下移两行,前两行出现空值可由默认值填充

lead:向下偏移 –同理

lag(A,offset,defval) over(partition by … order by …)

A:字段名称

offset:

  • 偏移量,即是向上偏移一个或n个的值,假设当前行为第5行,offset为3,则表示要找的数据为数据行的第2行(5-3=2)
  • 默认值为1

defavl:

  • 指定默认值:当取得值超出表的范围,则将defavl指定的值作为默认值
  • 没指定默认值则返回null

例如 : lag(A,1,A) over(partition by USER_NAME order by A)

    lag(A) over(partition by USER_NAME order by A)

    lag(A,2) over(partition by USER_NAME order by A)

lag(A,offset,defval) over(partition by … order by …)

注意:一定要习惯取别名

lag( … ) over(…) as …

lead( … ) over(…) as …

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7917.html

(0)
上一篇 2023-03-11
下一篇 2023-03-11

相关推荐

  • 使用pip更新Python包的方法

    使用pip更新Python包的方法Python是一种强大的可编程语言,提供了各种功能,其中许多功能都是通过调用Python软件包来实现的。在许多情况下,这些软件包是开源的,并且可以在互联网上免费获得。Python软件包通常都会定期更新,以改进现有功能并添加新功能。这也意味着开发者们需要不断更新他们的Python软件包,以确保代码的可靠性和功能的稳定性。

    2024-08-15
    23
  • 一、vmware搭建虚拟机集群(IP,防火墙,PATH环境变量)「终于解决」

    一、vmware搭建虚拟机集群(IP,防火墙,PATH环境变量)「终于解决」安装centos可以在网上找安装教程 我使用的版本: 虚拟机工具:Workstation 12 Pro 12.1.0 build-3272444 镜像:CentOS-7-x86_64-Minimal-

    2023-03-09
    140
  • 《阿里巴巴Java开发手册》码出高效详解(一)- 为什么要学习阿里编码手册「建议收藏」

    《阿里巴巴Java开发手册》码出高效详解(一)- 为什么要学习阿里编码手册「建议收藏」《Java 开发手册》(以下简称《手册》)是每个 Java 工程师人手必备的一本参考指南。该手册包括 编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构、设计规约 7 个部分 ,涵盖

    2023-01-25
    132
  • 如何安装Tkinter

    如何安装Tkinter如果你是一位Python工程师,那么你一定听过Tkinter。Tkinter是Python的标准GUI库,它提供了一套面向对象的GUI工具,在Python界面中可以方便地创建按钮、标签、文本框等界面元素。Tkinter对于Python GUI编程来说是非常重要的一部分。

    2024-07-28
    25
  • Python 实用技能大杂烩

    Python 实用技能大杂烩日期处理对于开发工程师来说非常重要,而在Python中,datetime模块是我们的好帮手。当我们拿到一个时间戳后,想要将其转换成可读时间格式,可以按照下面的代码示例进行:

    2024-03-02
    72
  • redis速度慢_数据库性能慢了

    redis速度慢_数据库性能慢了本篇为Redis性能问题诊断系列的第四篇,也是最后一篇,主要从应用程序、系统、服务器硬件及网络系统等层面上进行讲解,重点分享了哪些配置需要重点关注和调整优化,才能最大程度的发挥Redis的处理能力;

    2023-06-06
    138
  • Python 3ssl核心

    Python 3ssl核心Python语言是一种高级编程语言,源于1989年,由Guido van Rossum创建。Python是一种易于学习、易于阅读和易于维护的语言。Python 3ssl是Python中的一种加密模块,它提供了各种加密算法、协议和证书的实现。Python 3ssl提供的功能十分强大,很多使用Python开发的应用和项目与Python 3ssl息息相关。本篇文章将详细介绍Python 3ssl的相关知识,以及如何使用Python 3ssl进行加密和解密操作。

    2024-06-25
    43
  • Python如何删除文件或文件夹?

    Python如何删除文件或文件夹?在Python编程中,删除文件或文件夹是十分常见的需求,本文将介绍Python中删除文件和文件夹的方法和技巧。

    2024-07-05
    37

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注