Oracle函数记录

news2024/10/6 8:39:40

一、各个函数介绍

1.OVER(PARTITION BY… ORDER BY…)--开窗函数

1.开窗函数用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组     值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础     行的列和聚合列。

2. 先把一组数据按照(PARTITION BY)指定的字段分割成各种组,然后组内按照某个字段       排序。(ORDER BY);

2.OVER()里头的分组以及排序的执行晚于 where 、group by、 早于order by 的执行;

常用组合:

 - row_number() over(partition by ... order by ...)		--分组排序
 - rank() over(partition by ... order by ...)		--分组排序
 - dense_rank() over(partition by ... order 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() over(partition by ... order by ...)		--取出同一字段的前N行的数据
 - lead() over(partition by ... order by ...)		--取出同一字段的前N行的数据

二、实际使用

        row_number()over()

先说需求:树结构中只获取同一级目录的第一个数据信息,原因是分行与支行信息在同一级,这里我只需要分行的信息,不要支行的信息,具体情况如下图所示:

--目的:只获取同一级目录的第一个数据信息
SELECT JGBH,JGMC
FROM (
    --先根据父id进行分组,并将子id升序排序
  SELECT t.*, ROW_NUMBER() OVER (PARTITION BY SJJG ORDER BY JGBH) rn
  FROM GG_JGBH t
  where SYBZ = 1  --这是我筛选的条件,可更改
  CONNECT BY PRIOR JGBH = SJJG  --SJJG是父id,JGBH是子id
  START WITH SJJG IS NULL --从最高级的父id是空的开始
)
--再只获取每个分组的第一个数据
WHERE rn = 1;

         first_value()over()

first_value()over(partition by 列名1,列名2 order by 列名1,列名2)是求一组数据的第一个值

select distinct 
a.date,
a.name,
first_value(date)over(partition by name order by date asc)as `每个人对应最早的date`
,
first_value(date)over(partition by name order by date desc)as `每个人对应最晚的date`
from
(
select '张三'as name,'2021-04-11' as date
union all
select '李四'as name,'2021-04-09' as date
union all
select '赵四'as name,'2021-04-16' as date
union all
select '张三'as name,'2021-03-10'as date
union all
select '李四'as name,'2020-01-01'as date
)a


        last_value()over()

last_value()over(partition by 列名1,列名2 order by 列名1,列名2)是求一组数据的最后一个值

last_value()默认是升序,如果限制了是降序,则等同于first_value()升序

select distinct a.date,a.name
,last_value(date)over(partition by name order by date asc)as `每个人对应最晚的date`
from
(
select '张三'as name,'2021-04-11' as date
union all
select '李四'as name,'2021-04-09' as date
union all
select '赵四'as name,'2021-04-16' as date
union all
select '张三'as name,'2021-03-10'as date
union all
select '李四'as name,'2020-01-01'as date
)a

select distinct a.date,a.name
,last_value(date)over(partition by name order by date rows between unbounded preceding and current row)as `(-∞,X)`
,last_value(date)over(partition by name order by date rows between unbounded preceding and unbounded following)as `(-∞,+ ∞)`
,last_value(date)over(partition by name order by date rows between current row and unbounded following)as `(X,+ ∞)`
from
(
select '张三'as name,'2021-04-11' as date
union all
select '李四'as name,'2021-04-09' as date
union all
select '赵四'as name,'2021-04-16' as date
union all
select '张三'as name,'2021-03-10'as date
union all
select '李四'as name,'2020-01-01'as date
)a

 

 

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

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

相关文章

苹果MT4手机软件怎么下载?下载后怎么使用?

比较了解外汇交易的投资者都知道:自2022年9月24日起,在Apple的App Store应用商店里面苹果MT4手机软件已经显示是不可下载的,究其原因就是苹果MT4手机软件被官方下架了!看到这里先不要紧张,因为于2023年3月7日上午&…

100种思维模型之大脑系统思维模型-52

上世纪60年代,美国神经学家保罗 D 麦克莱恩(Paul D. MacLean)首次提出“三脑一体”假说,他认为人的大脑是蜥蜴-松鼠-猴子合体的隐喻,代表了进化发展不同阶段的遗传。 复旦大学管理学院的项保华教授对此有一个精彩的总结…

代码随想录_回溯_leetcode77 216 17

leetcode 77. 组合 77. 组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2: …

促进创新成果高质量发展,华秋“戴上举劳模和工匠人才创新工作室”成立!

4月14日,为充分发挥劳模和工匠人才、工会先进集体和个人示范引领作用,树立典型、鼓励先进,全面推进福田区劳模和工匠人才创新工作室创建和福田区工会组织建设工作,深圳市福田区2023年劳模和工匠人才创新工作室现场交流会在新一代产…

【SAS应用统计分析】软件的基本操及SAS数据集的整理

声明:本文内容来自网络,如有侵权请联系删除。本文还参照了B站up主庄7的课程内容【公开课】数据分析与SAS【15课】 目录 实验背景 实验步骤 步骤一:了解SAS系统的主要窗口及其功能。 步骤二:运行如下程序 语法规则&#xff1a…

vue-过滤器

vue允许定义过滤器,对于一些文本常见格式化。过滤器可以用在两个地方 -(1)v-bind 表达式 -(2){{}}插值表达式 使用:使用过滤器:{{ xxx | 过滤器名}} 或 v-bind:属性 "xxx | 过滤器名"…

Day952.如何降低认知负载 -遗留系统现代化实战

如何降低认知负载 Hi,我是阿昌,今天学习记录的是 关于如何降低认知负载的内容。 认知负载。这个看似与软件开发毫无瓜葛的知识,实际上却决定了软件系统的成败。 因此在遗留系统现代化中,把“以降低认知负载为前提”作为首要原则…

设计模式-结构型模式之适配器模式(Adapter)

结构型模式简介 结构型模式(Structural Pattern)描述如何将类或者对 象结合在一起形成更大的结构,就像搭积木,可以通过 简单积木的组合形成复杂的、功能更为强大的结构。 结构型模式可以分为类结构型模式和对象结构型模式: 类结构型模式关心类…

Springboot整合redis实现缓存

此次笔记是在实现了数据库的增删改查操作的基础上进行的,因此需要准备数据库、数据表,以及实现相对应的服务层、持久层、控制层。可参考之前的笔记Spring Boot整合 druid、Mybatis-plus 一、Redis安装 Redis 是完全开源免费的,遵守BSD协议&…

【每日一短语】对(某人)吹毛求疵

1、短语及释义 get all sensitive on sb. 释义: 对某人吹毛求疵。 sensitive: 敏感的,引申为“事多的”,“爱挑刺的”。 2、示例及出处 美剧:《摩登家庭》第4季第7集 Modern Family, Season 4 Episode 7 Jay Pritchett: Don’t g…

中医诊所一定要去尝试软文营销,效果简直不要太好

中医诊所是一种传统的医疗机构,随着互联网时代的发展,软文营销已经成为了中医诊所宣传推广的一种重要方式。通过撰写高质量的软文,中医诊所可以提升品牌知名度、增加患者数量、提高医疗服务质量等方面取得良好的效果。今天结合我10年营销经验…

INDEMIND双目惯性模组运行实时ORB-SLAM3教程

现在实验室视觉SLAM已经不够满足,所以需要多模态融合,正巧购入高翔博士推荐的INDEMIND双目惯性模组,根据官方例程在中使用ros接入ORB-SLAM3INDEMIND的双目鱼眼imu模组,这回有SDK及ORB-SLAM3安装过程中的各种常见性问题解决方法及安…

Boost的安装

过程 boost是一个非常重要的东西,是对C函数库的扩展,非常得不错,是第三方扩展,不过不是一般的第三方,是C标准委员会工作组成员发起的。 通过vs命令工具进入boost目录 执行bootstrap.bat命令 开始安装 b2.exe instal…

JavaScript经典教程(二)-- CSS基础部分

179:HTML基础部分(元素分类、特性、特殊元素等) — 补充 1、盒子模型 定义:一个元素在页面中所占的位置大小,叫盒子模型。 包含的样式:即影响元素大小的样式: width、height、margin、padding…

使用MyBatis实现关联查询

文章目录 一,查询需求(一)针对三张表关联查询(二)按班级编号查询班级信息(三)查询全部班级信息 二,创建数据库表(一)创建教师表(二)创…

云计算中的自动化运维技术及其实践

引言 随着云计算技术的快速发展,云计算成为了企业数据中心的新生态,提供了更加灵活、高效、安全的 IT 基础设施和应用服务,让企业能够更加专注于业务创新和变革。但是,云计算的快速发展也带来了新的安全挑战,尤其是在…

达摩院开源工业级说话人识别模型CAM++

近日,达摩院正式向公众开源工业级说话人识别通用模型CAM,兼顾准确率和计算效率,训练labels类别达20万,每类含20~200条梅尔频谱特征。当前该模型已上线Modelscope魔搭社区,后续将陆续开源针对各场景优化的工…

TCP协议三次握手过程分析

TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结…

Vue3技术4之watch监视属性、watch时value问题

Vue3技术4 watch监视属性watch监视ref定义的数据情况一:监视ref所定义的一个响应式数据App.vueDemo.vue 情况二:监视ref所定义的多个响应式数据App.vueDemo.vue 添加immediate属性Demo.vue watch监视reactive定义的数据情况一:监视reactive所…

直播带货冲击实体生意,杭州四季青打响禁止直播带货第一枪

最近,“杭州四季青部分市场禁止直播”的话题冲上热搜。 身处“直播电商之城”杭州的“中国服装行业第一街”杭州四季青的部分市场,打响了“驱逐直播第一枪”! 杭州四季青部分市场内为什么要明令禁止直播,直播卖货对实体商户带来了…