分组函数
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。
分组函数有: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中基本的分组函数
- Oracle_SQL函数-分组函数
- HiveQL基础语法(聚合,分组函数)
- 【Oracle练习】⑤第6章 分组函数
- Mysql必知必会(笔记)【分组函数,子查询, 联结,高级联结,组合查询】
- MySQL入门(3)- 分组函数(count、sum、avg、max、min)&分组查询(groupby、orderby)
- Jarno详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)
- Oracle-分组函数
- 单表-------主键、外键、选择操作,like操作符,in 批量查询、排序order by、表的复杂查询---分组函数(max/min/agv/sum/count)、group by、having
- Oracle之分组函数
- SQL 分组函数 group by
- Oracle的分组函数
- MySQL——分组函数、distinct、分组查询、连接查询、子查询
- 分组函数
- oracle学习之综合数据和分组函数
- [PL/SQL] 关于pl/sql编译报ORA-00934此处不允许使用分组函数 [复制链接]
- oracle总结之四———分组函数
- Oracle学习(4):分组函数
- 数据库分组和分组函数
- 分组函数