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年了,可这三年自己的能力并没有得到提升,反而随着互联网的发展,自己只会“点点点”的技能即将被淘汰。说自己很苦恼了,想要提升一下自己,可不知道该如何…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...
【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...
