Hive(15)中使用sum() over()实现累积求和和滑动求和

目的:

三个常用的排序函数row_number(),rank()和dense_rank()。这三个函数需要配合开窗函数over()来实现排序功能。但over()的用法远不止于此,本文咱们来介绍如何实现累计求和和滑动求和。

1、数据介绍

三列数据,分别是员工的姓名、月份和销售额
在这里插入图片描述

功能:对每个员工的销售业绩的累积求和以及滑动求和(每个月计算其最近三个月的总销售业绩)

2、累积求和

语法:
sum(需要求和的列) over(partition by 分组列 order by 排序列 asc/desc)

代码:

select
	 *,
	 sum(cnt) over(partition by name order by month) as total_cnt
from
	 default.salerinfo

结果:
在这里插入图片描述

3、滑动求和

累积求和还是比较简单的,滑动求和就需要用到over中的另一用法了:、

语法:
sum(需要求和的列) over(partition by 分组列 order by 排序列 range between ... and ...)

这里需要在over函数中使用range between and指定窗口的大小,向前使用preceding,向后使用following。如2 preceding and 1 following指定的窗口包括当前行、当前行前面两行以及当前行后面一行,总共4行。

注:下面代码中字段 month 必须是整数

1. 如在本例中,我们想要求每个月对应的最近三个月的业绩之和(包含本月在内),代码如下:

select
	 *,
	 sum(cnt) over(partition by name order by month range between 2 preceding and 0 following) as total_cnt
from
	 default.salerinfo

2. 如果不想写0 following,另一种更为合适的写法是使用current row:

select
	 *,
	 sum(cnt) over(partition by name order by month range between 2 preceding and current row) as total_cnt
from
	 default.salerinfo

1和2结果如下:
在这里插入图片描述

码字不易,喜欢请点赞,谢谢!!!😊

参考:
https://blog.csdn.net/abcdefg90876/article/details/105190396/
http://www.taodudu.cc/news/show-537160.html?action=onClick

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python+uiautomator2 框架搭建

一、安装整体步骤 01 开发环境安装 jdk安装(version "1.8.0_361")python安装 (Python37)python编辑器安装 (PyCharm2021) 02 运行环境安装 adb安装 (Android Debug Bridge versio…

处理Servlet生命周期事件

处理Servlet生命周期事件 接收关于 Servlet生命周期事件通知的类称为事件侦听器。这些侦听器实现Servlet API中定义的一个或多个servlet事件侦听器接口。侦听器类的逻辑分类如下: servlet请求侦听器Servlet上下文侦听器HTTP会话侦听器1. servlet请求侦听器 servlet请求侦听器…

vivado 硬块规划器

硬块规划器 Versal自适应SoC的硬块规划GT组件从通用/通道更新为AMD的GT_QUAD粒度Versal™ 自适应SoC。为了启用某些GT共享用例,对GT向导流进行了修改使用Vivado IP集成商。使用Vivado IP集成商构建使用单个或多个GT_ QUAD。连接到GT_QUAD的自定义IP的设计条目为通过…

如何一键导出多张图片二维码?图片批量建码生成的方法

现在很多的物品信息都会生成一张单独的图片,然后生成二维码印刷到包装或者其他地方上使用,那么如何快速将多张图片多批量生码处理,相信有很多的小伙伴都不太清楚该怎么完成。其实,大量图片生成二维码的方法是很简单的,…

shell脚本-函数及数组

一.函数 1.函数的作用 语句块定义成函数约等于别名,定义函数,再引用函数 封装的可重复利用的具有特定功能的代码 2.函数的基本格式 法一: [function] 函数名 {命令序列[return x] #使用return或者exit可以显式的结束函数 }法二&…

最新计算机软件毕业设计选题大全

最新计算机软件毕业设计选题大全 1、毕业设计选题 博主介绍:✌️大厂码农|毕设布道师,阿里云开发社区乘风者计划专家博主,CSDN平台Java领域优质创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️ 主要项目:小…

【Spring源码分析】循环依赖的底层源码剖析

循环依赖的底层源码剖析 一、预知知识二、循环依赖的底层源码剖析1. Spring 是如何存储半成品Bean的?getEarlyBeanReference 方法的源码分析 2. Spring 是如何解决的循环依赖呢?测试 3. 哪些循环依赖 Spring 是无法解决的呢?Async 引起的循环…

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test(),并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…

用户故事 | 以低代码之名,打造业务与IT协同新模式

关键发现: 客户痛点:对于一个人人关注创新的企业而言,业务团队从不缺乏创意,困扰他们的往往在于是否有一个工具,可以最高效地让创意变为现实。 解决方案:使用MENDIX低代码平台,在IT团队的支持下…

WebService的services.xml问题

WebService有多种实现方式,这里使用的是axis2 问题: 在本地开发,访问本地的http://localhost:8080/services/ims?wsdl,正常访问 但是打成jar包,不管是linux还是window启动,都访问不到,报错…

维护管理Harbor,docker容器的重启策略

维护管理Harbor 通过HarborWeb创建项目 在 Harbor 仓库中,任何镜像在被 push 到 regsitry 之前都必须有一个自己所属的项目。 单击“项目”,填写项目名称,项目级别若设置为"私有",则不勾选。如果设置为公共仓库&#…

【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​​ 目录 归并排序 代码实现&#xf…

Matplotlib应用-股票技术分析实战

MACD Moving Average Convergence/Divergence,意为异同移动平均线。它刻画的是股价变化的速度 MACD算法 指标含义公式短期EMA短期收盘价指数移动均线(12天)前一日EMA(12)11/13 今日收盘价2/13长期EMA长期收盘价指数移动均线(26天)前一日EMA(26)25/27 今日收盘价2…

qt5-入门-组件布局

参考: Qt学习之路_w3cschool 本地环境: win10专业版,64位 组件布局 绝对定位:给出确切的坐标值和尺寸,缺点是当用户改变窗口大小时,需要写函数响应变化(或者禁止用户改变大小) 布…

openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错

文章目录 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错210.1 谓词下推引起的查询报错210.1.1 问题现象210.1.2 原因分析210.1.3 处理办法 openGauss学习笔记-210 openGauss 数据库运维-常见故障定位案例-谓词下推引起的查询报错 210.…

Likeshop社区团购源码系统-社区团购更加便捷

一、什么是社区团购? 社区团购是一种基于社区的一种团购模式,依托于社区居民的消费需求,由社区团长组织发起,通过集中采购、批量销售的方式,为社区居民提供优质、优惠的商品。这种模式既满足了消费者对于优惠、便捷的…

Unity 观察者模式(实例详解)

文章目录 简介示例1 - 简单的文本更新通知示例2 - 多观察者监听游戏分数变化示例3 - 事件系统实现观察者模式示例4 - 泛型观察者和可序列化的事件系统示例5 - 使用C#委托简化版 简介 在Unity中实现观察者模式,我们可以创建一个Subject(目标/主题&#x…

Redis -- 背景知识

目录 特性 为啥Redis快? 应用场景 Redis不能做什么? Redis是在内存中存储数据的一个中间件,用作为数据库,也可以用作为缓存,在分布式中有很高的威望。 特性 In-memory data structures:在内存中存储数据key-val…

微信开放平台第三方授权(第三篇)-获取auth_access_token

1.AuthAcsessToken的获取 继续上文,上文提到了想要发送消息,就要获取授权单独的authtoken,通过这个token才能调用微信发送消息接口。有六个步骤,少一步也获取不到这个authaccesstoken。 Token生成说明 | 微信开放文档 这里需要…

SV-8003V 网络寻呼话筒

SV-8003V是深圳锐科达电子有限公司的一款桌面式对讲主机SV-8003V同样作为广播对讲系统的核心组成部分,集成有全区广播、分区广播、单点呼叫、点对点对讲、以及监听等功能。SV-8003V使用铝合金拉丝面板,并配有高性能的鹅颈麦克风以及高保真的全频喇叭&…