– 分组函数
常用的五个分组函数
– min()最小值,max()最大值,所有类型
select min(hiredate), max(hiredate) from emp; select min(sal), max(sal) from emp;
– sum()总和,avg()平均值
– SUM和AVG函数都是只能够对数值类型的列或表达式操作select sum(sal),avg(sal) from emp; -- avg排除null做计算 select avg(nvl(comm, 0)) from emp;
– count()统计符合条件的记录条数,不排除重复行
– 除了count(*)之外,其它所有分组函数都会忽略列中的空
-> 值,然后再进行计算select count(*) from emp where deptno = 30; -- 任意数值 select count(1) from emp where deptno = 30; -- 一个数值 select count(ename) from emp where deptno = 30; -- 列名
– 组函数中distinct
– distinct会消除重复记录后再使用组函数
– 查询有员工的部门数量。select count (distinct deptno) from emp;
– 在分组函数中使用 nvl 函数
– nvl 函数可以使分组函数强制包含含有空值的记录select avg (nvl (comm, 0)) from emp;
– group by 子句
– 通过 GROUP BY 子句可将表中满足WHERE条件的记录按照
-> 指定的列划分成若干个小组
– 其中GROUP BY子句指定要分组的列
– 注意:在group by 中,select子句只允许出现分组函数、或在group by中指定的列
– 如果在查询中使用了组函数,任何不在组函数中的列或表达式
-> 都必须包含在GROUP BY子句中
select deptno from group by deptno;
select deptno, job, sum(sal) 工资总和 from emp group by deptno, job;
– having 子句
select deptno, max(sal) 最大值 from emp
group by deptno
having max(sal) > 2900;
-组函数嵌套
与单行函数不同,组函数只能嵌套两层
select 语句执行顺序:
5 SELECT [column,] group_function(column)
1 FROM table
2 [WHERE condition]
3 [GROUP BY column]
4 [HAVING roup_function(column)expression
6 [ORDER BY column| group_function(column)expression];
SELECT语句执行过程:
1.通过FROM子句中找到需要查询的表;
2.通过WHERE子句进行非分组函数筛选判断;
3.通过GROUP BY子句完成分组操作;
4.通过HAVING子句完成组函数筛选判断;
5.通过SELECT子句选择显示的列或表达式及组函数;
6.通过ORDER BY子句进行排序操作。