当前位置: 首页 > 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;可不知道该如何…...

Amlogic S9XXX Armbian刷机完全指南:从入门到进阶的5个关键问题

Amlogic S9XXX Armbian刷机完全指南&#xff1a;从入门到进阶的5个关键问题 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l,…...

s2-pro语音合成新玩法:用标签控制语气,轻松制作带情绪的语音内容

s2-pro语音合成新玩法&#xff1a;用标签控制语气&#xff0c;轻松制作带情绪的语音内容 1. 语音合成技术的新突破 在数字内容创作领域&#xff0c;语音合成技术正变得越来越重要。传统的语音合成系统往往只能生成单调、机械的语音&#xff0c;缺乏情感表达和自然韵律。而s2-…...

iarduino_KB矩阵键盘库:硬件感知型Arduino按键驱动方案

1. 项目概述iarduino_KB是由俄罗斯嵌入式开发团队 iArduino.ru 面向 Arduino IDE 推出的专用矩阵键盘驱动库。该库并非通用型扫描抽象层&#xff0c;而是针对其自研四款物理形态与电气特性高度定制化的柔性/机械式矩阵键盘模块进行深度适配的固件级解决方案。其核心价值在于将底…...

益象创新与数谷智能,轻量化 AI 定制方案设计谁更优?

在企业数字化转型的下半场&#xff0c;人工智能&#xff08;AI&#xff09;的应用正从“大算力、大模型”的盲目崇拜&#xff0c;转向“轻量化、高适配”的务实落地上。对于中小型企业或大型企业的特定业务部门而言&#xff0c;动辄百万级的算力投入并不现实&#xff0c;一套能…...

有线/无线(空口)抓包过程及其分析

一、如何判断该抓有线包&#xff0c;还是无线包层级问题类型抓包位置L1/L2&#xff08;无线&#xff09;连不上、掉线、弱信号无线抓包L2&#xff08;有线&#xff09;VLAN错误有线抓包L3&#xff08;IP&#xff09;DHCP失败有线抓包L4&#xff08;传输&#xff09;丢包、重传有…...

请解释 Linux 操作系统中的进程与线程的区别,并举例说明它们各自的应用场景。

在 Linux 操作系统中&#xff0c;**进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;**是程序执行的基本单位&#xff0c;但它们在资源管理、隔离性、通信方式和性能开销上有显著区别。一、核心概念对比特性进程 (Process)线程 (Thread)定义操作系统进…...

【系统架构设计师-案例题(5)】人工智能 · 参考答案与解析(按分类)

文章目录目录一、机器学习基本概念单选 迁移学习单选 强化学习的核心特点二、人工智能分类&#xff08;弱人工智能与强人工智能&#xff09;单选 主要区别三、人工智能关键技术单选 说法错误项&#xff08;选非&#xff09;单选 哪项不是人工智能关键技术&#xff08;选非…...

Karp的21个NPC问题:从理论到实践的经典探索

1. Karp与NPC问题的历史背景 1971年&#xff0c;Stephen Cook在论文《The Complexity of Theorem Proving Procedures》中首次提出了NP完全性的概念&#xff0c;并证明了布尔可满足性问题&#xff08;SAT&#xff09;属于NP完全问题。这一突破性工作为计算复杂性理论奠定了基石…...

3步解锁FGA智能工具:彻底解放F/GO玩家双手的效率提升指南

3步解锁FGA智能工具&#xff1a;彻底解放F/GO玩家双手的效率提升指南 【免费下载链接】FGA FGA - Fate/Grand Automata&#xff0c;一个为F/GO游戏设计的自动战斗应用程序&#xff0c;使用图像识别和自动化点击来辅助游戏&#xff0c;适合对游戏辅助开发和自动化脚本感兴趣的程…...

如何从业务出发,设计一个可落地的智能客服 RAG 系统

一、核心原则以业务需求为锚点&#xff0c;而不是技术驱动很多 RAG 项目失败的根因&#xff1a;没搞清楚“解决谁的问题”一开始就堆模型、堆技术&#x1f449; 正确做法&#xff1a;先拆需求&#xff0c;再设计系统二、三方核心需求拆解设计前必须明确三类角色目标&#xff1a…...