第六章分组函数课堂笔记和练习
发布时间
阅读量:
阅读量
– 分组函数
- 常用的五个分组函数
– min()最小值,max()最大值,所有类型
select min(hiredate), max(hiredate) from emp;
select min(sal), max(sal) from emp;
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子 clause之中。
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子句进行排序操作。
全部评论 (0)
还没有任何评论哟~
