分组
函数 分组函数对一组数据进行运算,针对一组数据(多行记录)只返回 一个结果,也称多行函数。
常用的分组函数
函数 功能说明 适用类型
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;