当前位置: 首页 > news >正文

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基础部分二&#xff08;伪列/表、单个函数、空值处理、行列转换、分析函数、集合运算&#xff09;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&#xff1a;原码&#xff0c;反码&#xff0c;补码和常见的数据类型取值范围&#xff0c;溢出 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;此时学会c的话&#xff0c; 我所知道的周边的会c的同学&#xff0c;可手握…...

Java题目训练——年终奖和迷宫问题

目录 一、年终奖 二、迷宫问题 一、年终奖 题目描述&#xff1a; 小东所在公司要发年终奖&#xff0c;而小东恰好获得了最高福利&#xff0c;他要在公司年会上参与一个抽奖游戏&#xff0c;游戏在一个6*6的棋盘上进行&#xff0c;上面放着36个价值不等的礼物&#xff0c; 每…...

ORACLE EBS系统应用基础概述(1)

一、前言 有网友在论坛发帖惊呼&#xff1a;好不容易把EBS系统安装好了&#xff0c;进去一看傻眼了&#xff0c;不知道从哪儿下手&#xff1f;发出惊叹的这位网友所遇到的问题&#xff0c;实际上也是很多人曾经遇到或正在遇到的问题。长期以来&#xff0c;国内的非专业人士&am…...

电子科技大学信息与通信工程学院2023考研复试总结

一、笔试 笔试主要考察数字逻辑&#xff08;数电&#xff09;的相关知识&#xff0c;满分200分&#xff0c;需要复习的内容不多且知识点比较集中。根据考场上实际感受&#xff0c;题目难度不大但是题量稍大&#xff0c;2h完成试卷几乎没有多少剩余时间。笔试的体型分为填空题、…...

神经网络激活函数

神经网络激活函数神经网络激活函数的定义为什么神经网络要用激活函数神经网络激活函数的求导Sigmoid激活函数Tanh激活函数Softmax激活函数神经网络激活函数的定义 所谓激活函数&#xff08;Activation Function&#xff09;&#xff0c;就是在人工神经网络的神经元上运行的函数…...

2.C 语言基本语法

文章目录二、C 语言基本语法1.语句2.表达式3.语句块4.空格5.注释6.printf()函数基本用法7.占位符8.输出格式10.标准库&#xff0c;头文件提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 二、C 语言基本语法 1.语句 C语言的代码由一行行语句&#xff0…...

Qt 6.5 LTS 正式发布

Qt 6.5 LTS 已正式发布。此版本为图形和 UI 开发者以及应用程序后端引入了许多新功能&#xff0c;还包含许多修复和通用的改进。Qt 6.5 将成为商业许可证持有者的长期支持 (LTS) 版本。 部分更新亮点&#xff1a; 改进主题和样式 使用 Qt 6.5&#xff0c;应用程序能够便捷地支持…...

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代码&#xff0c;使用requests和beautifulsoup4库来爬取指定网页的信息&#xff1a; import requests from bs4 import BeautifulSoupurl "https://example.com"# 发送GET请求&#xff0c;获取网页内容 response requests.get(url)# 将网页内…...

基于Java3D的网络三维技术的设计与实现

3D图形技术并不是一个新话题&#xff0c;在图形工作站以至于PC机上早已日臻成熟&#xff0c;并已应用到各个领域。然而互联网的出现&#xff0c;却使3D图形技术发生了和正在发生着微妙而深刻的变化。Web3D协会&#xff08;前身是VRML协会&#xff09;最先使用Web3D术语&#xf…...

python机器学习数据建模与分析——数据预测与预测建模

文章目录前言一、预测建模1.1 预测建模涉及的方面&#xff1a;1.2 预测建模的几何理解1.3 预测模型参数估计的基本策略1.4 有监督学习算法与损失函数&#xff1a;1.5 参数解空间和搜索策略1.6 预测模型的评价1.6.1 模型误差的评价指标1.6.2 模型的图形化评价工具1.6.3 训练误差…...

Flink系列-6、Flink DataSet的Transformation

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录Flink 算子Ma…...

Java-类的知识进阶

Java类的知识进阶 类的继承&#xff08;扩张类&#xff09; Java类的继承是指一个类可以继承另一个类的属性和方法&#xff0c;从而使得子类可以重用父类的代码。继承是面向对象编程中的重要概念&#xff0c;它可以帮助我们避免重复编写代码&#xff0c;提高代码的复用性和可…...

C# | 上位机开发新手指南(六)摘要算法

C# | 上位机开发新手指南&#xff08;六&#xff09;摘要算法 文章目录C# | 上位机开发新手指南&#xff08;六&#xff09;摘要算法前言常见摘要算法源码MD5算法SHA-1算法SHA-256算法SHA-512算法BLAKE2算法RIPEMD算法Whirlpool算法前言 你知道摘要算法么&#xff1f;它在保障…...

测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?

前言 在一个周末的早餐我被同事小周叫出去跑步&#xff0c;本想睡个懒觉&#xff0c;但是看他情绪不太稳定的样子&#xff0c;无奈艰难爬起陪他去跑步。 只见她气冲冲的对着河边大喊&#xff1a;真是冤枉啊&#xff01;!&#xff01; 原来是在工作中被莫名其妙背锅&#xff0…...

【Java闭关修炼】SpringBoot-SpringMVC概述和入门

SpringMVC概述和入门 MVC概述 实体类Bean:专门 存储业务数据 Student User业务处理Bean:指的是Service或者Dao 专门用来处理业务逻辑或者数据访问 用户通过视图层发送请求到服务器&#xff0c;在服务器中请求被Controller接受&#xff0c;Controller调用相应的MOdel层处理请求…...

pdf转换器免费版哪种好用:Aiseesoft PDF Converter Ultimate | 无损转word转Excel转PPT转图片啥都行!!!

Aiseesoft PDF Converter Ultimate 是一款优秀且高效可靠的无损电脑免费版pdf转换器软件&#xff0c;凭借卓越高识别精度的强悍OCR识别技术&#xff0c;可精准识别英文、法文、中文、德文、日文、韩文、意大利文、土耳其文等190多个国家的语言以及各种公式和编程语言&#xff0…...

革新市场营销,突破瓶颈:关键词采集和市场调查的秘密武器

近年来&#xff0c;全球新兴行业不断涌现&#xff0c;其中一些行业甚至成为了热门话题。这些新兴行业的出现&#xff0c;不仅带来了新的商机和发展机遇&#xff0c;也对传统产业带来了冲击和挑战。对于那些想要进入新兴行业的人来说&#xff0c;了解这些行业的关键词和市场情况…...

3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试

前段时间一个朋友跟我吐槽&#xff0c;说自己做软件测试工作已经3年了&#xff0c;可这三年自己的能力并没有得到提升&#xff0c;反而随着互联网的发展&#xff0c;自己只会“点点点”的技能即将被淘汰。说自己很苦恼了&#xff0c;想要提升一下自己&#xff0c;可不知道该如何…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...