Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)
Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)
- 1 伪列、伪表
- 1.1 伪列
- 1.2 伪表
- 2 单个函数
- 2.1 常用字符串函数
- 2.1.1 length() 询指定字符的长度
- 2.1.2 substr() 用于截取字符串
- 2.1.3 concat() 用于字符串拼接
- 2.2 常用数值函数
- 2.2.1 round() 四舍五入
- 2.2.2 trunc(for number) 数字截取
- 2.2.2 mod() 取模
- 2.3 常用日期函数
- 2.3.1 sysdate 当前日期时间
- 2.3.2 add_months() 加月份函数
- 2.3.3 LAST_DAY() 所在月的最后一天
- 2.3.4 TRUNC(for dates) 日期的截取
- 2.4 其他函数
- 2.4.1 nvl() 空值函数
- 2.4.2 decode() 条件取值
- 3 行列转换
- 3.1 使用PIVOT
- 3.2 使用sum和 DECODE 函数
- 3.2 使用 CASE WHEN 和 GROUP BY
- 4 分析函数
- 4.1 rank() 值相同 排名相同 序号跳跃
- 4.2 dense_rank() 值相同 排名相同 序号连续
- 4.3 row_number() over() 序号连续,不管值是否相同
- 5、集合运算
- 5.1 union all 并集(包括重复记录)
- 5.2 union 并集(不包括重复记录)
- 5.3 intersect 交集(两个集合的重复部分)
- 5.4 minus 差集
- 5.4.1 示例1
- 5.4.2 减运算分页
1 伪列、伪表
1.1 伪列
rowid:rowid是一个用来唯一标记表中行的伪列。它是物理表中行数据的内部地址,包含两个地址,其一为指向数据表中包含该行的块所存放数据文件的地址,另一个是可以直接定位到数据行自身的这一行在数据块中的地址。
除了在同一聚簇中可能不唯一外,每条记录的rowid是唯一的。可以理解成rowid就是唯一的
rownum:rownum是Oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,返回的第二行分配的是2,这个为字段可以用于限制返回查询的总行数,且rownum不可以以任何表的名称作为前缀
1.2 伪表
dual:dual 确实是一张表,是一张只有一个字段,一行记录的表。它的字段和记录都是无意义的。通常我们称之为’伪表’。dual表示系统自带的,是一个系统表,不能删除或者修改其表结构

2 单个函数
2.1 常用字符串函数
2.1.1 length() 询指定字符的长度
语法:length(string)
解释:计算string所占的字符长度
select length('ABCD') from dual
结果为 4
2.1.2 substr() 用于截取字符串
语法: substr(string string, int a[, int b]);
解释:string 需要截取的,a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取),b 要截取的字符串的长度(省略为截取到最后)
select substr('ABCD',2,2) from dual
结果为 BC
2.1.3 concat() 用于字符串拼接
语法:Concat(表达式1,表达式2)
解释:用表达式1值和表达式2值进行拼接显示。
select concat('A','B') from dual
结果为 AB
另外还有其他的拼接方式
select concat(concat('A','B'),'C') from dual -- concat只能拼接两个字符串,需要拼接多个需要嵌套select 'A' || 'B' || 'C' from dual -- 可以使用 || 进行字符串的拼接
2.2 常用数值函数
2.2.1 round() 四舍五入
语法:ROUND(number[,decimals])
解释:number 待做截取处理的数值,decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分,并四舍五入。如果为负数则表示从小数点开始左边的位数,相应整数数字用0填充,小数被去掉。需要注意的是,和trunc函数不同,对截取的数字要四舍五入。
select round(100.456,2) from dual -- 100.46
2.2.2 trunc(for number) 数字截取
语法:TRUNC(number[,decimals])
解释:number 待做截取处理的数值;decimals 指明需保留小数点后面的位数,可选项,忽略它则截去所有的小数部分。
注意:截取时并不对数据进行四舍五入
select trunc(100.456,2) from dual -- 100.45
2.2.2 mod() 取模
语法:mod(m,n)
解释:(1)MOD返回m除以n的余数,如果n是0,返回m;(2)这个函数以任何数字数据类型或任何非数值型数据类型为参数,可以隐式地转换为数字数据类型。
select mod(10,3) from dual -- 1
2.3 常用日期函数
2.3.1 sysdate 当前日期时间
语法:sysdate
解释:返回当前日期时间
select sysdate from dual -- 2023-04-11 22:02:30
2.3.2 add_months() 加月份函数
语法:add_months(times,months)
解释:用于计算在时间times之上加上months个月后的时间值,要是months的值为负数的话就是在这个时间点之间的时间值(这个时间-months个月)
select add_months(sysdate,2) from dual -- 2023-06-11 22:06:04
2.3.3 LAST_DAY() 所在月的最后一天
语法:last_day(time)
解析:返回指定日期所在月份的最后一天
select last_day(sysdate) from dual -- 2023-04-30 22:08:30
2.3.4 TRUNC(for dates) 日期的截取
语法:TRUNC(date[,fmt])
解释:date 一个日期值;fmt 日期格式; 该日期将按指定的日期格式截取;忽略它则由最近的日期截取
select trunc(sysdate,'mi') from dual -- 按分钟截取(把秒截掉,显示当前日期的分钟)
select trunc(sysdate,'hh') from dual -- 按小时截取(把分钟截掉,显示当前日期的小时)
select trunc(sysdate) from dual -- 按日截取(把时间截掉)
select trunc(sysdate,'mm') from dual -- 按月截取(把日截掉,显示当月第一天)
select trunc(sysdate,'yyyy') from dual -- 按年截取(把月截掉,显示当年第一天)
2.4 其他函数
2.4.1 nvl() 空值函数
语法:NVL(表达式1,表达式2)
解释:如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
SELECT NVL(NULL, 0) FROM DUAL; -- 0
2.4.2 decode() 条件取值
语法1:decode(expression,value,result1,result2)
解释:如果expression=value,则输出result1,否则输出result2
语法1:decode(expression,value1,result1,value2,result2,value3,result3…,default)
解释: 如果expression=value1,则输出result1,expression=value2,输出reslut2,expression=value3,输出result3,若expression不等于所列出的所有value,则输出为default
select decode(100,1,2,400,200,500) from dual -- 500
3 行列转换
3.1 使用PIVOT
语法1: PIVOT(任意聚合函数 FOR 列名 IN(类型))
解释:【聚合函数】聚合的字段,是需要转化为列值的字段;【列名】是需要转化为列标识的字段,【类型】即是需要的结果展示,【类型】中可以指定别名; IN中还可以指定子查询。
SELECT * FROM (SELECT A16.INTEREST_RATE_CD,A16.DATA_DT,A16.TERM,A16.INTEREST_RATEFROM FACT_FTP260_BSC_A16 A16
)
PIVOT(SUM(INTEREST_RATE)FOR TERMIN ('1D' AS D1 ,'7D' AS D7 ,'14D' AS D14,'1M' AS M1 ,'2M' AS M2 ,'6M' AS M6,'9M' AS M9 ,'1Y' AS Y1 ,'2Y' AS Y2,'3Y' AS Y3 ,'5Y' AS Y5 ,'7Y' AS Y7,'10Y' AS Y10 ,'15Y' AS Y15 ))
3.2 使用sum和 DECODE 函数
select (select name from t_area where id = areaid) 区域,sum(case when month='01' then money else 0 end)一月,sum(case when month='02' then money else 0 end)二月,sum(case when month='03' then money else 0 end)三月,sum(case when month='04' then money else 0 end)四月,sum(case when month='05' then money else 0 end)五月,sum(case when month='06' then money else 0 end)六月,sum(case when month='07' then money else 0 end)七月,sum(case when month='08' then money else 0 end)八月,sum(case when month='09' then money else 0 end)九月,sum(case when month='10' then money else 0 end)十月,sum(case when month='11' then money else 0 end)十一月,sum(case when month='12' then money else 0 end)十二月from t_account
where year = '2012'
group by areaid
3.2 使用 CASE WHEN 和 GROUP BY
注:这种方式是最常用的,比价容易理解
SELECTA16.INTEREST_RATE_CD,SUM(CASE TERM WHEN '1D' THEN A16.INTEREST_RATE ELSE 0 END) AS D1,SUM(CASE TERM WHEN '7D' THEN A16.INTEREST_RATE ELSE 0 END) AS D7,SUM(CASE TERM WHEN '14D' THEN A16.INTEREST_RATE ELSE 0 END) AS D14,SUM(CASE TERM WHEN '1M' THEN A16.INTEREST_RATE ELSE 0 END) AS M1,SUM(CASE TERM WHEN '2M' THEN A16.INTEREST_RATE ELSE 0 END) AS M2,SUM(CASE TERM WHEN '3M' THEN A16.INTEREST_RATE ELSE 0 END) AS M3,SUM(CASE TERM WHEN '6M' THEN A16.INTEREST_RATE ELSE 0 END) AS M6,SUM(CASE TERM WHEN '9M' THEN A16.INTEREST_RATE ELSE 0 END) AS M9,SUM(CASE TERM WHEN '1Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y1,SUM(CASE TERM WHEN '2Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y2,SUM(CASE TERM WHEN '3Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y3,SUM(CASE TERM WHEN '5Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y5,SUM(CASE TERM WHEN '7Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y7,SUM(CASE TERM WHEN '10Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y10,SUM(CASE TERM WHEN '15Y' THEN A16.INTEREST_RATE ELSE 0 END) AS Y15
FROM FACT_FTP260_BSC_A16 A16
GROUP BY A16.INTEREST_RATE_CD
4 分析函数
可用于排名(1:值相同 排名相同 序号跳跃;2.值相同 排名相同 序号连续;3.序号连续,不管值是否相同)
4.1 rank() 值相同 排名相同 序号跳跃
select rank() over(order by usenum desc) 序号,t.* from t_account t

4.2 dense_rank() 值相同 排名相同 序号连续
select dense_rank() over(order by usenum desc) 序号,t.* from t_account t

4.3 row_number() over() 序号连续,不管值是否相同
select row_number() over(order by usenum desc) 序号,t.* from t_account t

5、集合运算
5.1 union all 并集(包括重复记录)
select * from t_owners where id>5
union all
select * from t_owners where id<8

5.2 union 并集(不包括重复记录)
select * from t_owners where id>5
union
select * from t_owners where id<8

5.3 intersect 交集(两个集合的重复部分)
select * from t_owners where id>5
intersect
select * from t_owners where id<8

5.4 minus 差集
5.4.1 示例1
select * from t_owners where id>5
minus
select * from t_owners where id<8

5.4.2 减运算分页
select rownum, t.* from t_account t where rownum <=20
minus
select rownum, t.* from t_account t where rownum <=10

相关文章:
Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)
Oracle基础部分二(伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算)1 伪列、伪表1.1 伪列1.2 伪表2 单个函数2.1 常用字符串函数2.1.1 length() 询指定字符的长度2.1.2 substr() 用于截取字符串2.1.3 concat() 用于字符串拼接2.2 常用数值函…...
c/c++:原码,反码,补码和常见的数据类型取值范围,溢出
c/c:原码,反码,补码和常见的数据类型取值范围,溢出 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所知道的周边的会c的同学,可手握…...
Java题目训练——年终奖和迷宫问题
目录 一、年终奖 二、迷宫问题 一、年终奖 题目描述: 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物, 每…...
ORACLE EBS系统应用基础概述(1)
一、前言 有网友在论坛发帖惊呼:好不容易把EBS系统安装好了,进去一看傻眼了,不知道从哪儿下手?发出惊叹的这位网友所遇到的问题,实际上也是很多人曾经遇到或正在遇到的问题。长期以来,国内的非专业人士&am…...
电子科技大学信息与通信工程学院2023考研复试总结
一、笔试 笔试主要考察数字逻辑(数电)的相关知识,满分200分,需要复习的内容不多且知识点比较集中。根据考场上实际感受,题目难度不大但是题量稍大,2h完成试卷几乎没有多少剩余时间。笔试的体型分为填空题、…...
神经网络激活函数
神经网络激活函数神经网络激活函数的定义为什么神经网络要用激活函数神经网络激活函数的求导Sigmoid激活函数Tanh激活函数Softmax激活函数神经网络激活函数的定义 所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数…...
2.C 语言基本语法
文章目录二、C 语言基本语法1.语句2.表达式3.语句块4.空格5.注释6.printf()函数基本用法7.占位符8.输出格式10.标准库,头文件提示:以下是本篇文章正文内容,下面案例可供参考 二、C 语言基本语法 1.语句 C语言的代码由一行行语句࿰…...
Qt 6.5 LTS 正式发布
Qt 6.5 LTS 已正式发布。此版本为图形和 UI 开发者以及应用程序后端引入了许多新功能,还包含许多修复和通用的改进。Qt 6.5 将成为商业许可证持有者的长期支持 (LTS) 版本。 部分更新亮点: 改进主题和样式 使用 Qt 6.5,应用程序能够便捷地支持…...
Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权
Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权1. 前言1.1. 如何找编译好的EXP2. 定时任务提权2.1. 查看定时任务2.2. 通配符注入提权2.2.1. 创建执行脚本2.2.2. 创建定时任务2.2.3. 查看效果2.2.4. 提权操作2.2.4.1. 切换普通用户2.2.4.2. 执行命令2.2.4.3. …...
Python爬虫——使用requests和beautifulsoup4库来爬取指定网页的信息
以下是一个简单的Python代码,使用requests和beautifulsoup4库来爬取指定网页的信息: import requests from bs4 import BeautifulSoupurl "https://example.com"# 发送GET请求,获取网页内容 response requests.get(url)# 将网页内…...
基于Java3D的网络三维技术的设计与实现
3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用到各个领域。然而互联网的出现,却使3D图形技术发生了和正在发生着微妙而深刻的变化。Web3D协会(前身是VRML协会)最先使用Web3D术语…...
python机器学习数据建模与分析——数据预测与预测建模
文章目录前言一、预测建模1.1 预测建模涉及的方面:1.2 预测建模的几何理解1.3 预测模型参数估计的基本策略1.4 有监督学习算法与损失函数:1.5 参数解空间和搜索策略1.6 预测模型的评价1.6.1 模型误差的评价指标1.6.2 模型的图形化评价工具1.6.3 训练误差…...
Flink系列-6、Flink DataSet的Transformation
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址:https://flink.apache.org/ 学习资料:https://flink-learning.org.cn/ 目录Flink 算子Ma…...
Java-类的知识进阶
Java类的知识进阶 类的继承(扩张类) Java类的继承是指一个类可以继承另一个类的属性和方法,从而使得子类可以重用父类的代码。继承是面向对象编程中的重要概念,它可以帮助我们避免重复编写代码,提高代码的复用性和可…...
C# | 上位机开发新手指南(六)摘要算法
C# | 上位机开发新手指南(六)摘要算法 文章目录C# | 上位机开发新手指南(六)摘要算法前言常见摘要算法源码MD5算法SHA-1算法SHA-256算法SHA-512算法BLAKE2算法RIPEMD算法Whirlpool算法前言 你知道摘要算法么?它在保障…...
测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?
前言 在一个周末的早餐我被同事小周叫出去跑步,本想睡个懒觉,但是看他情绪不太稳定的样子,无奈艰难爬起陪他去跑步。 只见她气冲冲的对着河边大喊:真是冤枉啊!!! 原来是在工作中被莫名其妙背锅࿰…...
【Java闭关修炼】SpringBoot-SpringMVC概述和入门
SpringMVC概述和入门 MVC概述 实体类Bean:专门 存储业务数据 Student User业务处理Bean:指的是Service或者Dao 专门用来处理业务逻辑或者数据访问 用户通过视图层发送请求到服务器,在服务器中请求被Controller接受,Controller调用相应的MOdel层处理请求…...
pdf转换器免费版哪种好用:Aiseesoft PDF Converter Ultimate | 无损转word转Excel转PPT转图片啥都行!!!
Aiseesoft PDF Converter Ultimate 是一款优秀且高效可靠的无损电脑免费版pdf转换器软件,凭借卓越高识别精度的强悍OCR识别技术,可精准识别英文、法文、中文、德文、日文、韩文、意大利文、土耳其文等190多个国家的语言以及各种公式和编程语言࿰…...
革新市场营销,突破瓶颈:关键词采集和市场调查的秘密武器
近年来,全球新兴行业不断涌现,其中一些行业甚至成为了热门话题。这些新兴行业的出现,不仅带来了新的商机和发展机遇,也对传统产业带来了冲击和挑战。对于那些想要进入新兴行业的人来说,了解这些行业的关键词和市场情况…...
3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试
前段时间一个朋友跟我吐槽,说自己做软件测试工作已经3年了,可这三年自己的能力并没有得到提升,反而随着互联网的发展,自己只会“点点点”的技能即将被淘汰。说自己很苦恼了,想要提升一下自己,可不知道该如何…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
