日期:2014-05-16  浏览次数:20387 次

Oracle学习笔记 6 -- 分组函数

上一次笔记学习了,多表查询,本次笔记来学习Oracle中的分组函数。

首先来了解一下什么是组函数:

组函数:作用于一组数据,并对一组数据返回一个值。

SQl中组函数的类型:

COUNT():求出全部的记录数。

MAX():求出一组数据中的最大值。

MIN():求出最小值。

AVG():求平均值。

SUM():求和。

数值型数据可以使用AVG()和SUM()函数;MIN()和MAX()函数适用于任意数据类型,但是一般应用在数值类型上。

基本语法:

SELECT [column], group_function(column), ...

FROM table

[WHERE condition]

例:使用count()函数,求出雇员表中记录总数。

SQL> select count(*) from emp ;
 
  COUNT(*)
----------
        14
 
SQL> select count(deptno ) from emp ;
 
COUNT(EMPNO)
------------
         14

count()函数括号中,可以使用*,*表示返回所有记录的总数。可以使用列名,列名表示返回该列记录中不为空的记录总数。在上面的结果中,查询部门号,在结果中显示有14条数据,在部门表中只有4条数据,那么返回的查询结果中存在重复的情况。可以使用distinct 关键字,来去重。即:select count(distinct deptno ) from emp ; , 返回的结果为3。

例:使用MAX 、MIN,求雇员表中,员工的最高工资和最低工资。

SQL> select max(sal) , min(sal ) from emp ;
 
  MAX(SAL)   MIN(SAL)
---------- ----------
      5000        800

例:使用AVG、SUM函数,求雇员表中,30号部门的工资平均值和工资总和。

SQL> select sum(sal) ,avg(sal) from emp where deptno = 30 ;
 
  SUM(SAL)   AVG(SAL)
---------- ----------
      9400 1566.66666

使用group by 字句,来为数据分组。

基本语法: