您的位置:首页 > 数据库 > Oracle

分组函数

2014-06-19 14:32 134 查看
分组函数是oracle中作用于一组数据,返回一个值。

分组函数有:AVG,COUNT,MAX,MIN,STDDEV,SUM等。

分组函数语法如下:

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

FROM  table

[WHERE  condition]

[GROUP BY  column]

[ORDER BY  column];

AVG(平均值)、SUM (合计)函数、MIN(最小值) 、 MAX(最大值)函数。其中AVG和SUM只能对数值型数据进行操作,MIN和MAX函数可以对任意数据类型的数据进行操作。

eg: select AVG(salary),max(salary),min(salary),sum(salary)

from emp

where job_id = 'IT';

select count(*) from emp;-------返回emp的记录总数。

select count(column) from emp;----返回column不为空的记录总数。

select count(distinct column) from emp;---返回column非空且不重复的记录总数。

select AVG(column) from emp;-----返回column所有非空列的平均值。

select AVG(NVL(column,0)) from
emp;---这样就无法忽略空值,返回的就是column所有列的平均值。

PS:SELECT列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中,但是group by子句中的列不需要包含在select列表中。

eg:SELECT   department_id, AVG(salary)
FROM     employees
GROUP BY department_id ;

SELECT   AVG(salary)

FROM     employees

GROUP BY department_id ;

PS:where子句中不能使用分组函数,但是可以再having子句中使用分组函数。

eg:SELECT   department_id, MAX(salary)
FROM     employees
GROUP BY department_id
HAVING   MAX(salary)>10000 ; 但是将having中的条件放在where子句中则会报错。

分组函数可以嵌套:

eg:SELECT   MAX(AVG(salary))
FROM     employees
GROUP BY department_id;-----显示department_id中平均工资最大的department_id。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 分组函数