zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    软件设计师2006年11月下午试题6(C++ 状态模式)
    Delphi中使用RegExpr单元进行匹配与替换操作
    正则表达式中贪婪与懒惰匹配
    C++类属性算法equal和mismatch
    lazarus下使用正则表达式
    正则表达式在每行开头插入行号
    STL向量构造函数
    软件设计师2004年5月下午试题6(C++ 数组下标检测)
    演示STL双端队列的push_back和push_front函数
    用正则表达式改小写为大写
  • 原文地址:https://www.cnblogs.com/hfx123/p/9901823.html
Copyright © 2011-2022 走看看