Oracle-分析函数(累计求和,排序等)

在Oracle中分析函数又称为开窗函数
分为以下两类:
第一类:是聚合分析函数,主要包含(sum,count,AVG、MAX、MIN等),主要是对内部分组的数值按照要求内部聚合处理;
第二类:是排序分析函数,主要包含(ROW_NUMBER、DENSE_RANK、RANK等),根据不同要求呈现不同的排序方式。
结构函数介绍:

SELECT table.column,
analysis_function() OVER ( [PARTITION BY 字符] [ORDER BY 字段 [rows]] ) as 统计值FROM table;

analysis_function表示分析函数,对应的有sum,count,AVG、MAX、MIN,ROW_NUMBER、DENSE_RANK、RANK等;
OVER:开窗函数名;
partition by :为分组字段;
order by :指定排序字段;
rows:指定数据窗口(即指定分析函数要操作的行数)

聚合分析函数

一、聚合分析函数与聚合函数的不同
聚合分析函数可以在查询语句中,每一组每一行进行聚合,聚合函数只能通过group by 整体聚合。
二、聚合分析函数
聚合分析函数:()中需要填值

--组内计数
count() over(partition by ... order by ...)
--组内最大值
max() over(partition by ... order by ...)
--组内最小值
min() over(partition by ... order by ...)
--组内求和,可计算累计求和
sum() over(partition by ... order by ...)
--组内均值
avg() over(partition by ... order by ...)
--组内的第一个值
first_value() over(partition by ... order by ...)
--组内的最后一个值
last_value() over(partition by ... order by ...)
--Lag函数可以在一次查询中取出当前行的同一字段的前面第N行的数据。
lag() over(partition by ... order by ...)
--Lead函数可以在一次查询中取出当前行的同一字段的后面第N行的值。
lead() over(partition by ... order by ...)

举例:
sum() over(partition by … order by …) 累计求和

select 营销中心,事业部,产品编码,产品名称,品类,年份,月份,,当月指标金额,sum(当月指标金额) over(partition by 营销中心, 事业部,产品编码,产品名称,品类,年份
ORDER BY) 月累计指标,
sum(当月指标金额) over(partition by 营销中心,事业部,产品编码,年份
ORDER BY 产品编码
) 全年指标
FROM   TABLE;

排序分析函数

分为 rank,dense_rank,row_number 三种排序方式。
对应的函数结构如下所示:

rank ( ) over ( [query_partition_clause]order_by_clause )

--rank如果出现两个相同的数据,那么后面的数据就会直接跳过这个排名,比如:当第2名和第3名的利润相同时,rank的结果是1,2,2,4;select d,l,m,rank() over(partition by d order by l)  from aaa;

dense_rank ( ) over ([query_partition_clause] order_by_clause )

--dense_rank则不会跳过这个排名,结果是1,2,2,3
select d,l,m,dense_rank() over(partition by d order by l)  from aaa;

row_number ( ) over ( [query_partition_clause]order_by_clause )

--row_number哪怕是两个数据完全相同,排名也会不一样,结果是1,2,3,4
select d,l,m,row_number() over(partition by d order by l)  from aaa;

通过上面的结构可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序

排序分析函数:()中不填值

--重复排序(1,2,3,4)
row_number() over(partition by ... order by ...)
--重复跳过排序(1,2,2,4)
rank() over(partition by ... order by ...)
--重复不跳过排序(1,2,2,3)
dense_rank() over(partition by ... order by ...)

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

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

相关文章

开发《猫咪攻略》小游戏的意义

开发《猫咪攻略》小游戏的意义有以下几点: 学习和掌握游戏开发的基本技能:通过开发《猫咪攻略》小游戏,可以学习和掌握游戏开发的基本技能,包括游戏策划、游戏设计、游戏编程和游戏测试等方面的技能。增强对猫咪的了解和认识&…

【Linux系统化学习】进程的状态 | 僵尸进程 | 孤儿进程

个人主页点击直达:小白不是程序媛 Linux专栏:Linux系统化学习 目录 操作系统进程的状态 运行状态 阻塞状态 进程阻塞的现象 挂起阻塞状态 Linux进程状态 Linux内核源代码怎么说 R(running状态)运行状态 S(sl…

关于漏洞:检测到目标SSL证书已过期【原理扫描】

这个漏洞是监听443端口的,如果我们是正式的网站且使用了https那么更新证书即可。 但是我的服务器上面几乎是个空服务器,谁会用443呢? 找不到谁用了那我就部署一个nginx,用nginx代理443,找个证书配一下呗。 然而当我…

CNN卷积神经网络Python实现

import torch from torch import nn# ①定义互相关运算 def corr2d(X, K):"""计算二维互相关运算。"""# 获取K的形状 行为h,列为wh, w K.shape# 生成全0的矩阵,行为X的行减去h加上1,列为X的列减去w加上1Y torch.zeros((…

rabbit MQ的延迟队列处理模型示例(基于SpringBoot)

说明: 生产者P 往交换机X(typedirect)会发送两种消息:一、routingKeyXA的消息(消息存活周期10s),被队列QA队列绑定入列;一、routingKeyXB的消息(消息存活周期40s&#xf…

Prolog 中的逻辑探险:学习9组逻辑蕴涵公式

引言 上次写了16组等价公式定律,今天继续用Prolog写9组逻辑蕴涵公式。 感觉这些公式的名称与公式挺难一一对应来记忆的,只能多练习了. 1. 附加律 (Addition) A ⇒ A∨B 当你拿到一个苹果(A),突然你知道,即使有了梨(…

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制商业文案助手

随着智能助手的不断普及和发展,商业文案的创作也变得更加智能化和定制化。在这个信息爆炸的时代,商业文案的撰写已经不再是简单的文字表达,而是需要结合大数据分析和人工智能技术,以更好地满足目标客群的需求。在本文中,我们将介绍如何利用向量数据库Milvus Cloud搭建GPT大…

Nosql的redis概述及基本操作

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…

tokenizers Tokenizer 类

Tokenizer 类 依赖安装 pip install tensorflow pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple基类原型 tokenizers.Tokenizer(model)基类说明 Tokenizer 函数构造一个分词器对象。分词方式主要有word-level、subword-level、char-level三种&#x…

3.什么是Spring IOC 容器?有什么作用?

什么是Spring IOC 容器 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对 象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部…

软件测试/人工智能丨人工智能取代软件测试团队

在数字时代,人工智能(AI)和软件测试如同两位不同领域的英雄,各自拥有独特的技能和力量。然而,当这两者碰撞在一起时,究竟会擦出怎样的火花呢?让我们进入这场奇妙的对决,探索AI如何改…

如何快速让苹果TF上架

苹果TF上架是一个相对复杂的过程,需要经过多个步骤和审核环节。以下是一些建议,可以帮助你快速让苹果TF上架: 确保应用程序符合苹果的审核指南和规则。在提交应用程序之前,仔细阅读苹果的审核指南,并确保你的应用程序…

MFC项目添加CUDA支持

文章目录 前言一、开启项目CUDA支持二、链接CUDA库三、链接cu文件 前言 我目前的项目状况是: 拥有一个MFC项目;拥有现成的 .cuh文件 和 .cu文件。 我想做的是:将.cuh和.cu文件放到我的项目中,并且编译成功跑起来 一、开启项目C…

如何使用清华源镜像下载python相关的包?

目的:当使用pip3默认安装python相关插件遇到网络不可达问题时,更换镜像源尝试下载~ #使用如下命令,以下网址都是Python Package Index (PyPI)的一个镜像站点 ##########清华 pip3 install 包名 -i https://pypi.tuna.…

【python学习】基础篇-常用函数-sorted() 对可迭代对象进行排序

sorted()函数是Python中的内置函数,用于对可迭代对象进行排序操作。 它会返回一个新的已排序的列表,而不会修改原始的可迭代对象。 sorted()函数的基本语法如下: sorted(iterable, keyNone, reverseFalse)参数说明: iterable:表…

Halcon (0):C# 联合Halcon方式简介和就业市场说明

文章目录 文章专栏视频资源前言相关视频联合C#开发直接导出C#代码Halcon引擎调用开发函数封装库工程导出 总结就业市场 文章专栏 Halcon开发 视频资源 机器视觉之C#联合Halcon 前言 根据我的测试,我发现Halcon和WPF中的halcon插件,代码具有对应性。就是…

反序列化漏洞(4), phar文件反序列化, 漏洞实验, 漏洞利用

一, 简介 1. phar文件 PHAR,全称PHP Archive,是一种将PHP代码和资源打包成一个自包含的文件的格式。这种文件格式可以将PHP代码文件和其他资源集合在一起,实现应用程序、库或插件的分发。在PHP中,Phar广泛应用于打包应用程序、库…

Unity - 实现模型动态伸长缩短,贴图不变形(材质球参数篇)

思路为修改模型材质球的Tiling参数&#xff0c;根据与自身localScale的值得到合适的比例&#xff0c;再修改Tiling值 var mat target.transform.GetComponent<Renderer>().material; var oriValue mat.mainTextureScale;//沿着Y轴伸缩 oriValue.y 1 * target.transfo…

人脸识别系统——Face recognition 人脸识别

第1关&#xff1a;人脸检测 ****************BEGIN**************** import face_recognition image_path ./step1/image/children.jpg image face_recognition.load_image_file(image_path) face_locations face_recognition.face_locations(image) print(face_locations)…

HCIP-二、MSTP+Eth-trunk

二、MSTPEth-trunk 实验拓扑实验需求及解法 实验拓扑 实验需求及解法 //1.如图所示&#xff0c;配置设备名称和 IP 地址。 //2.在 SW1 与 SW2 之间配置链路聚合协议 LACP&#xff0c;完成以下需求&#xff1a; //2.1 SW1 作为主动端&#xff0c;设置系统优先级为最高。 [SW1]l…