极度郁闷,有一段时间没登陆51了,今天回来竟然把提示问题给弄丢了,猜了半个小时才猜出来。。。。

数据库之分组函数

上一篇 / 下一篇  2010-01-07 08:29:58 / 个人分类:Oracle

分组函数

  分组函数对一组数据进行运算,针对一组数据(多行记录)只返回 一个结果,也称多行函数。
 
  常用的分组函数
        函数      功能说明                适用类型
        avg()    计算平均值              数值型
        count()  返回查询所得到的记录行数 任何数据类型
        max()    计算最大值              任何数据类型
        min()    计算最小值              任何数据类型
        sum()    求和                    数值型

  count()函数
      count(*)返回组中总记录数目;
      count(exp) 返回表达式exp值非空的记录数
      count(distinct(exp))返回表达式exp值不重复的,非空的记录数目。
      举例:
      select count(*) from emp;
      select count(comm) from emp;
      select count(distinct(deptno)) from emp;
 
  分组函数与空值
      分组函数省略列中的空值
      select avg(comm) from emp;
      select sum(comm) from emp;

      可使用NVL()函数强制分组函数处理空值
      select avg(nul(comm,0)) from emp;
      select sum(nul(comm,0))/count(comm) from emp;

group by 字句
   
    group by 子句将数据分成若干小组
    语法格式
      select column ,group_function(column)
      from  table
      [where condition]
      [group by group_by_expression]
      [order by column]
    举例:
  select deptno ,avg(sal) from emp group by deptno;
  select deptno ,avg(sal) from emp where hiredate>'20-4月-81'
group by deptno;
  select deptno,job,avg(sal) from emp group by deptno,job order by demptno desc;
    说明:
      1。出现在select列表中的字段,如果不是包含在组函数中,那么该字段必须同时在group by字句中出现
      2。包含在group by 字句中的字段则不必须出现在select列表中
      3  可使用where字句限定查询条件
      4 可使用order by 字句指定排序方式

having子句
    子句用于过滤分组
    语法格式:
        select column,group_function(column)
        from  table
        [where condition]
        [group by  group_by_expression]
        [having  group_condition]
        [order by column]

    举例:
      select  deptno,job,avg(sal)
      from  emp
      where  hiredate>=to_date('1981年05月01','yyyy-mm-dd')
      group by  deptno,job
      having avg(sal)>1200
      order by deptno,job;

TAG: 数据库 函数

 

评分:0

我来说两句

Open Toolbar