Oracle函数记录

一、各个函数介绍

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

 

 

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

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

相关文章

软件测试?月薪20k+?不会自动化测试的我真的很难....

做自动化测试后悔吗? 后悔,真的后悔! 后悔没有早点学..... 虽然现在网上到处都在散播35的焦虑,姑且信之,那么反问你,如果你30岁了,那么给你5年,能够在某个领域成为专家呢&#xf…

《花雕学AI》ChatGPT跟人类的思考方式有什么不同?

一、ChatGPT是一个基于GPT-3.5的对话语言模型,它可以根据用户的输入生成多轮对话,也可以生成文本、代码、音乐等内容。ChatGPT的思考方式是利用大量的数据和强大的算力来学习语言的联合概率分布,从而能够根据上下文和目标生成合理和有趣的回复…

python文本自动伪原创-ai一键伪原创

chatgpt批量伪原创的优势 ChatGPT是一个由OpenAI开发的强大的自然语言处理模型,它具有批量伪原创的优势,以下是这些优势: 模型能够处理大量的数据:ChatGPT通过训练大规模的语言模型来生成伪原创文本。这个模型拥有一个庞大的语料…

GaussDB工作级开发者认证—第二章GaussDB数据库应用程序开发指引

一. 驱动概述 GaussDB客户端接入认证,GaussDB支持以下三种认证方式:基于主机的认证口令认证SSL加密 二. JDBC接口介绍 1. JDBC概述 Java数据库连接(JDBC)是Java标准,它提供了从Java连接到关系数 据库的接口&#x…

数据挖掘:心脏病预测(测评指标;EDA)

目录 一、前期准备 二、实战演练 2.1分类指标评价计算示例 2.2数据探索性分析(EDA) 2.2.1 导入函数工具箱 2.2.2 查看数据信息等相关数据 判断数据缺失和异常 数字特征相互之间的关系可视化 类别特征分析(箱图,小提琴图&am…

5.2 中心极限定理

学习目标: 要学习中心极限定理,我会采取以下几个步骤: 学习基本概念:了解什么是随机变量、样本、总体、概率密度函数等基本概念,为学习中心极限定理打下基础;学习正态分布:中心极限定理的核心…

windows搭建ftp及原理(小白向)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 环境一、实验步骤1.1安装ftp 二、ftp实验引发的思考1.简单阐述ftp的原理2.ftp建立的流程 总结 环境 windwos任意环境不需要server windows10 提示:以下…

【Linux】System V IPC-命名管道共享内存消息队列

System V IPC-命名管道&共享内存&消息队列 命名管道共享内存创建共享内存附加和分离共享内存 消息队列消息队列的接口 命名管道 使用mkfifo命令,创建一个命名管道,通过ll可以查看当前命名管道的类型 p类型,也就是pipe管道类型。 之…

Vector - CAPL - Panel面板_01

前面有过简单的介绍panel面板的功能,不过终究感觉有点简陋,最近也在搞PyQT5,发现如果对于这块了解不多的情况下,想要做一些东西的话,简直无从下手,因此专门翻阅了之前的文章,查看了下确实缺少了…

json for modern c++

目录 json for modern c概述编译问题问题描述问题解决 读取JSON文件demo json for modern c GitHub - nlohmann/json: JSON for Modern C 概述 json for modern c是一个德国大牛nlohmann写的,该版本的json有以下特点: 1.直观的语法。 2.整个代码由一个…

机器学习——L1范数充当正则项,让模型获得稀疏解,解决过拟合问题

问:使用L2范数正则项比L1范数正则项得到的是更为稀疏的解。 答:错误,L1范数正则项得到的是更稀疏的解。因为在L1正则项中,惩罚项是每个参数绝对值之和;而在L2正则项中,惩罚项是每个参数平方的和。L1正则项…

( “树” 之 DFS) 111. 二叉树的最小深度 ——【Leetcode每日一题】

111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2…

Nginx 正向代理、方向代理、端口转发

正向代理就是客户端代理,代理客户端,服务端不知道实际发起请求的客户端 正向代理中,proxy和client一般同一个lan或者网络可达,server与client一般不可达(缓存场景除外) 正向代理类似一个跳板机&#xff0c…

java异常

下面是算术异常。 抛出的异常其实是个类。 下面是空指针异常。 用异常时,下面语句不会执行。 上面这些是运行时异常 下面这是编译时异常。 在程序编译期间发生的异常,称为编译时异常,也称为受检查异常 在程序执行期间发生的异常,…

企业信息化建设该怎么做?方向和手段都在这了

企业信息化建设该怎么做? 如果现在是十年前,我一定会说,做信息化需要寻找熟悉不同编程语言、有经验的程序员。 但是现在,如果不是特别复杂的信息化系统,其实公司完全可以使用零代码平台自主开发,不需要再…

TryHackMe-Year of the Jellyfish(linux渗透测试)

Year of the Jellyfish 请注意 - 此框使用公共 IP 进行部署。想想这对你应该如何应对这一挑战意味着什么。如果您高速枚举公共 IP 地址,ISP 通常会不满意… 端口扫描 循例nmap 扫描结果中还有域名,加进hosts FTP 枚举 尝试anonymous Web枚举 有三个端…

Open Inventor 2023.1 Crack

发行说明 Open Inventor 2023.1(次要版本) 文档于 2023 年 4 月发布。 此版本中包含的增强功能和新功能: Open Inventor 10 版本编号更改体积可视化 单一分辨率的体绘制着色器中与裁剪和 ROI 相关的新功能MeshVizXLM 在 C 中扩展的剪辑线提…

[网络安全]第三次作业

目录 1. 什么是IDS? 2. IDS和防火墙有什么不同? 3. IDS工作原理? 4. IDS的主要检测方法有哪些详细说明? 5. IDS的部署方式有哪些? 6. IDS的签名是什么意思?签名过滤器有什么作用?例外签名…

SpringBootApplication最详细注解

SpringBootApplication最详细注解 SpringBootApplication的注解分类1.Target 2.Retention3.Document 4.Inherited5.SpringBootConfiguration 6.EnableAutoConfiguration6.1AutoConfigurationPackage这个注解6.1.1 Import6.1.2 AutoConfigurationpackages.Registrar.class 6.2 A…

经营软件公司五年,从外包到SaaS的踩坑笔记

文章目录 摘要开公司的两个误区关于管理关于合作关于SaaS其他经验大和强是两码事。大不是目的,强才是。小步试错、慢慢迭代不要掉入流量陷阱 摘要 经营公司已有五年,经历了三年的疫情停滞,现在正在转型为一家SaaS公司。虽然曾经迷茫过&#…