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.rhkb.cn/news/169280.html

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

相关文章

TX Text Control.NET For WPF 32.0 Crack

TX Text Control 支持VISUAL STUDIO 2022、.NET 5 和 .NET 6 支持 .NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款完全可编程的丰富编辑控件&#xff0c;它在专为 Visual Stu…

mariadbmysql更改数据库默认存储路径

1.登录数据库查询默认存储位置 默认存储在/var/lib/mysql show variables like "%datadir%"; 2.先停止服务 systemctl stop mariadb 3.移动数据文件 mv /var/lib/mysql/ /home/ 4.修改服务配置 vim /etc/my.cnf.d/server.cnf5.在 [mysqld] 下面增加 datadir/ho…

关于Fragment的生命周期,你知道多少?

Fragment生命周期 Fragment是Android中用于构建用户界面的一种组件。 Fragment具有自己的生命周期&#xff0c;包括以下几个阶段&#xff1a; onAttach(): 当Fragment与Activity关联时调用&#xff0c;可以通过该方法获取到所关联的Activity的引用。 onCreate(): 在Fragment创…

SOFAStack软件供应链安全产品解析——SCA软件成分分析

近年来&#xff0c;软件供应链安全相关攻击事件呈快速增长态势&#xff0c;造成的危害也越来越严重&#xff0c;为了保障软件供应链安全&#xff0c;各行业主管单位也出台了诸多政策及技术标准。基于内部多年的实践&#xff0c;蚂蚁数科金融级云原生PaaS平台SOFAStack发布完整的…

使用SecScanC2构建P2P去中心化网络实现反溯源

个人博客: xzajyjs.cn 前言 这款工具是为了帮助安全研究人员在渗透测试过程中防止扫描被封禁、保护自己免溯源的一种新思路。其利用到了区块链中的p2p点对点去中心化技术构建以来构建代理池。 工具链接&#xff1a;https://github.com/xzajyjs/SecScanC2 实验过程 该工具分为…

深圳世有伯乐教育科技有限公司——LJ培训

今天来吐槽一波 深圳世有伯乐教育科技有限公司就是一个垃圾的培训机构&#xff0c;不&#xff0c;说是培训机构都是扭曲事实了&#xff0c;因为它根本就没有国家认可的办学许可证。光说没法让人信服&#xff0c;以下是企查查的截图&#xff1a; 世有伯乐的工商信息图片 续上&…

线程池常见面试题总结

线程池的工作原理和实现已经在之前的文章中介绍 本文主要总结面试中线程池常问题目。 1、有几种常见的线程池&#xff08;必知必会&#xff09;? 1&#xff09;定长线程池&#xff08;FixedThreadPool&#xff09; 2&#xff09;定时线程池&#xff08;ScheduledThreadPoo…

Java CC 解析 SQL 语法示例

示例&#xff1a;SimpleSelectParser 解析 select 11; 输出 2&#xff1b; 0&#xff09;总结 编写 JavaCC 模板&#xff0c;*.jj 文件。 编译生成代码文件。 移动代码文件到对应的包下。 调用生成的代码文件。 1&#xff09;JavaCC 模板 main/javacc/SimpleSelectParse…

数据下钻分析?图表链接一招搞定!

前言 在云计算时代&#xff0c;海量业务数据对企业和社会组织的运营至关重要。但这些数据的复杂性&#xff08;数量庞大、种类繁多、散落在不同系统和仓库中、数据格式和标准不同&#xff09;给查询和处理带来了挑战。 此时&#xff0c;一个统一的查询入口能实现对不同系统中数…

WAL 模式(PostgreSQL 14 Internals翻译版)

性能 当服务器正常运行时&#xff0c;WAL文件不断被写入磁盘。但是&#xff0c;这些写操作是顺序的:几乎没有随机访问&#xff0c;因此即使是HDD也可以处理这个任务。由于这种类型的加载与典型的数据文件访问非常不同&#xff0c;因此有必要为WAL文件设置一个单独的物理存储&a…

labelimg使用以及xml和txt转化

一、使用 winr——输入cmd 激活已有的环境 conda activate torch1.2.0 下载lebelme pip install labelme3.16.7 再输入labelme打开软件就可 可以设置自动保存&#xff0c;View——auto save mode打上勾 二、注意 1.自己类的定义名称&#xff0c;在txt中是0&#xff0c;1&a…

自动驾驶之—车道线感知

零、前言 &#xff1a; 最近在学习自动驾驶方向的东西&#xff0c;简单整理一些学习笔记&#xff0c;学习过程中发现宝藏up 手写AI 一、视觉系统坐标系 视觉系统一共有四个坐标系&#xff1a;像素平面坐标系&#xff08;u,v&#xff09;、图像坐标系&#xff08;x,y&#xff09…

QT:编译opencv4.5.3

软件版本 QT&#xff1a;5.9.11 OpenCV 4.5.3 mingw 530&#xff08;32位&#xff09; cmake 3.15.3 下载地址&#xff1a; opencv下载&#xff1a;https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/ cmake下载&#xff1a;https://cmake.org/files/ qt下…

2.3.C++项目:网络版五子棋对战之实用工具类模块的设计

文章目录 一、实用工具类模块&#xff08;一&#xff09;功能 二、设计和封装&#xff08;一&#xff09;日志宏封装&#xff08;二&#xff09;mysql_util封装&#xff08;三&#xff09;Jsoncpp-API封装&#xff08;四&#xff09;file_util封装&#xff08;五&#xff09;st…

centos7安装mysql

首先检查是否已经已经下载mysql安装包&#xff1a; rpm -qa | grep mysql 如果存在则可以删除&#xff1a; rpm -e xxxx xxxx表示包名称 下载mysql安装包&#xff1a; wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 然后安装mysql包&#…

如何判断LED透明屏质量好坏?

要判断LED透明屏的质量好坏&#xff0c;您可以考虑以下几个关键因素&#xff1a; 焊点品质。焊点饱满的证明焊接工艺好&#xff0c;亮度高的透明屏&#xff0c;证明焊锡用的好&#xff1b;品质不好的是虚焊&#xff0c;容易出现接触不良现象。 灯珠温度。点亮一段时间后&#x…

实现多余内容变成省略号

实现效果 代码 <p class"item-content">{{ item.content }}</p>样式 .item-content {white-space: nowrap;/* 禁止换行 */overflow: hidden;/* 隐藏溢出部分 */text-overflow: ellipsis;/* 使用省略号表示溢出部分 */ }

freeCAD不合并导入step文件

1.问题描述 在使用freeCAD导入step文件的时候&#xff0c;一开始会导入成一个成体&#xff0c;想隐藏某些部件&#xff0c;却只能隐藏整个装配体&#xff0c;就是图示位置无法展开。 2.解决方法 找到首选项把第5步里面的不打钩就可以了。 3.freeCAD的用处 这个主要的用处还是用…

VR智慧景区,为游客开启智慧旅游新时代

近年来&#xff0c;文旅部加强了5G、VR虚拟技术等在文旅产业行业的运用&#xff0c;随着科技的不断发展&#xff0c;VR技术的运用越来越广泛&#xff0c;VR智慧景区作为一种全新的旅游方式&#xff0c;也渐渐的受到了人们广泛的关注&#xff0c;它可以让人们足不出户就欣赏到各…

golang 八股文整理

目录 进程、线程、协程Go 的垃圾回收机制GC 的触发条件GC 的调优GMP 调度和 CSP 模型Goroutine 的调度原理Goroutine 的切换时机Context 结构原理Context 工作原理Context 使用场景Golang 的内存分配机制竞态问题内存逃逸golang 内存对齐机制golang 中 new 和 make 的区别&…