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

 

posted @ 2018-11-07 10:22  不--易  阅读(520)  评论(0编辑  收藏  举报