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