oracle中的函数
聚合函数
基本概念
聚合函数是用于对一组函数进行计算,如SUM,AVG函数等等。其中除了count其他聚合函数都不会计算空值也就是被忽略。
聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。
常用的聚合函数如下
sum
作用:用来对一组值进行求和
语法: sum(需要计算的列)
select sum(t.salary) from STAFF t
结果
表数据如下
avg
作用:用于对一组数据进行计算平均值
语法:avg(需要计算的列)
select avg(t.salary) from STAFF t
结果:
max
作用:获取一组数据中最大值
语法:max(需要计算的列)
select max(t.salary) from STAFF t
结果:
min
作用:获取一组数据中最小的值
语法:min(需要计算的列)
select min(t.salary) from STAFF t
结果:
count
作用:获取数据数量
语法:count(列名或者 * ) (一般选择用id充当列名)
select count(t.salary) from STAFF t
结果:
还有GROUPING ,BINARY_CHECKSUM ,CHECKSUM_AGG 等等
转换函数
常用的有一下几种
to_char
作用:转换成char类型
语法1:TO_char(需要转换的值)
select TO_char(t.hiredate) from EMP t
结果:
语法2:TO_char(需要转换的值,转换格式)
select TO_char(22121,'$99999') from EMP t
结果:
to_date
作用:转换成时间类型
语法1:TO_date(需要转换的值)
select TO_date(t.hiredate) from EMP t
结果:
语法2:TO_date(需要转换的值,格式)
select TO_date('2015 6 24','yyyy-mm-dd') from EMP t
结果:
to_number
作用:转换成数值类型
语法:TO_number(需要转换的值)
select TO_number('22121') from EMP t
结果: 注意不能使用双引号
分析函数
row_number
row_number函数返回一个唯一的,当遇到相同的数据时,排名按照记录集中记录的顺序依次递增
select t.*,row_number() over(partition by deptno order by deptno desc )"row_number" from EMP t;
结果:
dense_rank
dense_rank函数返回一个唯一的值,当遇到相同数据时,所有相同数据的排名是一样的,同时会在最后一条相同
select t.*,dense_rank() over(partition by deptno order by sal desc )"dense_rank" from EMP t;
结果:
rank
rank函数返回一个唯一的值,当遇到相同的数据时,所有相同数据的的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名
select t.*,rank() over(partition by deptno order by sal desc )"rank" from EMP t;
结果:
其他函数
常用的其他函数
nvl
作用及语法: nvl(exp1,exp2) 如果exp1的值为nul,则返回exp2,否则返回exp1
select t.*,nvl(comm,0) from EMP t
结果:可以看到多出了一列 为空的都变成0了
nvl2
作用及语法: nvl(exp1,exp2,exp3) 如果exp1的值为nul,则返回exp3否则返回exp2
select t.*,nvl2(comm,comm+100,0) from EMP t
结果: 可以看到不为空的都加上100
decode
作用及语法:decode(value,if1,then1,if2,thent2,.....,else) 如果value值为 if1 则返回 then1,如果为if2则返回then2,否则返回else
select t.*,decode(comm,0,comm+100,0) from EMP t
结果: 可以看到不等于0都 变成了默认值0
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析