hive窗口函数记录

记录工作中和学习中的窗口函数,方便以后使用,本记持续更新和完善,版本:231019

文章目录

    • 1.什么是窗口函数
    • 2.窗口函数的表达式
    • 3.窗口函数的类型
      • 1) 排名函数
      • 2) 聚合函数
      • 3) 跨行取值函数
    • 4.[frame]滑动窗口
      • 1)窗口选择的两种模式:
      • 2)滑动模式的两种表达式

1.什么是窗口函数

窗口函数,能为每行数据划分一个窗口,然后对窗口范围内的数据进行计算, 最后将计算结果返回给该行 数据 。

使用场景:在一条数据中既想要展示明细,又想要体现一部分数据整体的效果,就可以使用窗口函数。这也是它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。

如下图式例:既想要展示sc表每个sid学生的成绩,又想要展示展示每个学生在整个年级的排名情况,rw即为窗口所展示的数据

SELECT *,row_number() over( ORDER BY score desc ) as rw FROM sc

在这里插入图片描述

2.窗口函数的表达式

function(args) over([partition by expression] [order by [asc|desc]] [frame])

表达式解析:
function:<窗口函数名>
over :”关键字 用于指定窗口的范围
(partition by: <用于分组的列名> order by <用于排序的列名>)
asc|desc:升序和降序,不写默认是升序

frame:计算行数的范围(详细请看下面第四点:[frame]滑动窗口)

3.窗口函数的类型

1) 排名函数

row_number()、 rank()、dense_rank() 
row_number()排序相同时不会重复,会根据顺序排序 即 1,2,3
rank()排序相同时会重复,同一排名有几个,后面排名就会跳过几次,即 1,1,3
dense_rank()排序相同时会重复,排名相同的名次一样,且后面名次不跳跃,即1,1,2

示例:

select *,
row_number() over(partition by cid order by score desc) rw,
rank() over(partition by cid order by score desc) rk,
dense_rank() over(partition by cid order by score desc) dense_rk
from sc 
where cid = 01

在这里插入图片描述

2) 聚合函数

max()、 min()、sum()、avg()、count()
max ()最大值
min ()最小值
sum ()求和
avg()求平均值
count()计数

3) 跨行取值函数

  lead()、lag()

语法:

lead(expression,n)获取当前行的下边n行 、n个字段的值
lag(expression,n)获取当前行的上边n行 、n个字段的值

expression:行数命
n:代表便宜量,想要偏移的行数

实例如下:

select * from activeselect uid,dt,lag(dt,1) over(PARTITION by uid ORDER BY dt) lg,lead(dt,1) over(PARTITION by uid ORDER BY dt) ld
from active

在这里插入图片描述
使用范围:可以对数据进行同步和环比,针对

4.[frame]滑动窗口

function(args) over([partition by expression] [order by [asc|desc]] [frame])

1)窗口选择的两种模式:

rows模式按物理行进行划分
range模式按数据模式进行划分

2)滑动模式的两种表达式

{range|row}frame_start : 从自定行开始到当前行结束
{range|row}between frame_start and frame_end: 指定开始行和结束行

滑动行范围的常用表达式:

表达式解析
unbounded preceding从开始行
expression preceding从当前行往前推 n 行 (expression 写为整数)
current row当前行
expression following从当前行往后推n行 (expression 写为整数)
unbounded following到结束行

示例:通过改变row参数,改变窗口的大小

图一:
select * from sc 图二:窗口默认当前行之前的所有行
select sid,cid,sum(score) over(partition by sid)
from sc图三:使用row使窗口变成当前行的前一行到当前行,窗口只有两行,得出图三的效果
select sid,cid,sum(score) over(partition by sid  rows 1  preceding)
from sc

在这里插入图片描述
在这里插入图片描述

#当order by 后面缺少窗口从句条件,窗口规范默认是 从当前行到当前行以上的所有行
rows between unbounded preceding and current
#当order by 和 窗口从句条件都缺失,窗口范围默认 当前行上面所有行以及下面的所有行
rows between unbounded preceding and unbounded following

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何实现前端实时通信(WebSocket、Socket.io等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测(多指标,多图)

回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测&#xff08;多指标&#xff0c;多图&#…

【图解数据结构】手把手教你如何实现顺序表(超详细)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、算法模板、汇编语言 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️线性表1.1 &#x1f514;线性表的定义1.2 &#x1f514;线性表的存储结构 二. ⛳️…

Premiere Pro(Pr)2023软件下载及安装教程

目录 一.简介 二.安装步骤 软件&#xff1a;Pr版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;8.30G安装环境&#xff1a;Win11/Win10&#xff08;1809版本以上&#xff09;硬件要求&#xff1a;CPU2.6GHz 内存8G(或更高&#xff0c;不支持7代以下CPU&#xf…

【微服务保护】初识 Sentinel —— 探索微服务雪崩问题的解决方案,Sentinel 的安装部署以及将 Sentinel 集成到微服务项目

文章目录 前言一、雪崩问题及其解决方案1.1 什么是雪崩问题1.2 雪崩问题的原因1.3 解决雪崩问题的方法1.4 总结 二、初识 Sentinel 框架2.1 什么是 Sentinel2.2 Sentinel 和 Hystrix 的对比 三、Sentinel 的安装部署四、集成 Sentinel 到微服务 前言 微服务架构在现代软件开发…

如何利用数字化转型升级,重塑企业核心竞争力?

工程机械行业是一个周期性明显的行业&#xff0c;企业经营受到宏观经济与国家基础设施建设的影响较大&#xff0c;例如企业经济上行时&#xff0c;加大投资扩大生产规模&#xff0c;以满足市场需求的增长&#xff0c;当经济下行时&#xff0c;企业可能面临减产和裁员等问题&…

Ubuntu 安装 npm 和 node

前言 最近学习VUE&#xff0c;在ubuntu 2204 上配置开发环境&#xff0c;涉及到npm node nodejs vue-Cli脚手架等内容&#xff0c;做以记录。 一、node nodejs npm nvm 区别 &#xff1f; node 是框架&#xff0c;类似python的解释器。nodejs 是编程语言&#xff0c;是js语言的…

手机游戏定制研发手机软件开发

手机游戏定制研发是一个多阶段的过程&#xff0c;它使开发者能够根据客户的需求和创意&#xff0c;构建独特的游戏体验。这个领域是一个蓬勃发展的市场&#xff0c;因为手机游戏在全球范围内都备受欢迎。在本文中&#xff0c;我们将深入探讨手机游戏定制研发的主要步骤以及关键…

Day22

1、分别占据栈底&#xff0c;共用栈顶&#xff0c;对着入栈 2、循环队列不预留一个空间 3、直接定址法线性探测&#xff08;可能占别人的位置&#xff09; 4、直接选择无关顺序&#xff0c;选出max/min

UGO+DRS评复之路

前言 针对数据库整体迁移方案&#xff0c;为解决异构平台数据库迁移&#xff0c;为减轻迁移人员的工作强度以及迁移周期。华为云GaussDB迁移UGO&DRS迁移工具应运而生。 UGO介绍 数据库和应用迁移&#xff08;Database and Application Migration UGO&#xff0c;简称为UG…

SparkSQL执行流程与Catalyst优化器

目录 一、SparkSQL运行流程与Catalyst优化器 &#xff08;1&#xff09;RDD运行流程 &#xff08;2&#xff09;SparkSQL自动优化 &#xff08;3&#xff09;Catalyst优化器流程 &#xff08;4&#xff09;Catalyst优化器总结 &#xff08;5&#xff09;Spark SQL执行流程 一、…

HttpClient远程使用大全

一 HttpClient简介 1.1 概述 HttpClient只能以编程的方式通过其API用于传输和接受HTTP消息。主要实现功能&#xff1a; 实现了所有 HTTP 的方法&#xff08;GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS 等&#xff09; 支持 HTTPS 协议 支持代理服务器&#xff08;Nginx…

【网络安全 --- xss-labs靶场通关(11-20关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

如果需要安装各种系统&#xff0c;虚拟机&#xff0c;工具等等关注我&#xff0c;已经在出系统的课程了 一&#xff0c;靶场安装 超详细的靶场安装教程如下&#xff0c;提供工具&#xff0c;靶场&#xff0c;镜像等 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程&…

前端跨域相关

注&#xff1a;前端配置跨域后服务器端&#xff08;Nginx&#xff09;也需要配置&#xff0c;否则接口无法访问 vue跨域 配置文件 /vue.config.js devServer: { port: 7100, proxy: { /api: { target: http://域名, changeOrigin: true, logLevel: debug, pathRewrite: { ^/…

程序员想要网上接单却不知道如何是好?那这篇文章你可得收藏好了!

作为一名程序员&#xff0c;想要网上接单赚赚零花钱&#xff0c;提高生活水平&#xff0c;这当然是无可厚非的&#xff0c;甚至有许多人已经将网上接单作为主业。 可是面对网上五花八门的接单平台&#xff0c;看着网上真真假假的信息&#xff0c;你真的清楚如何选择吗&#xf…

深度学习_6_实战_点集最优直线解_代码解析

问题描述&#xff1a; 上述题目的意思为&#xff0c;人工造出一些数据点&#xff0c;对我们的模型y Xw b ∈进行训练&#xff0c;其中标准模型如下&#xff1a; 其中W和X都为张量&#xff0c;我们训练的模型越接近题目给出的标准模型越好 训练过程如下&#xff1a; 人造数…

用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案

环境: Win11 专业版 HP 笔记本 傲梅分区软件 闪迪16G U盘 Win10 官方镜像文件 Win11PE 系统安装U盘 USB固态硬盘盒 问题描述: 起因 开始使用windows自动磁盘管理工具压缩不了磁盘,提示无法将卷压缩到超出任何不可移动的文件所在点,关闭系统保护还原,删除系统创建…

VSCode C/C++ 分目录+多文件编译配置2

前言&#xff1a;介绍 task.json 和 launch.json 文件 task.json 和 launch.json 是用于配置 VS Code 编辑器中的任务 和 调试功能的两个重要文件。 task.json 文件用于配置任务&#xff0c;它定义了执行特定操作的任务&#xff0c;并提供了相应的命令和参数。以下是 task.js…

2、Linux权限理解

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 前言 Linux权限的概念 1.文件访问者的分(人) 2.文件类型和访问权限(事物属性) 3.文件权限值的表示方法 4.文件访问权限的相关设置方法 file指令 目录的权限 粘滞位 关于权限的总结 前言 在开始Linux权限理…

excel常用的几个函数

1、MID函数 通常用来返回返回指定字符串中的子串。 函数公式&#xff1a; MID(string, starting_at, extract_length) String&#xff08;必填&#xff09;&#xff1a;包含要提取字符的文本字符串 starting_at&#xff08;必填&#xff09;&#xff1a;文本中要提取的第一个字…