1.分组查询
(1)分组函数
包括:AVG、SUM、MIN、MAX、MAX、COUNT、WM_CONCAT
另外:NVL函数也很重要
-- NAL函数的目的是把一个空值(null)转换成一个实际的值;
-- 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值;
-- 其表达式的值可以是数字型、字符型和日期型,但表达式1和表达式2的数据类型必须相同。
NVL(表达式1,表达式2)
(2)在分组函数中使用group by
-- group by 子句,例:
select deptno ,avg(sal)
from emp
group by deptno;
-- 抽象
-- select a ,组函数(x)
-- from table
-- group by a ;
-- 在select列表中所有未包含在组函数中的列都应该包含在group by子句中,
-- 例:
select deptno ,job,sum(sal)
from emp
group by deptno, job
-- order by depton;
(3)在分组函数中使用having/where过滤分组数据
-- having子句的使用以及和where的区别
-- 1.where条件中不能使用组函数,having可以
-- 2.在输入顺序上,
-- where先过滤后分组,例:
select deptno,avg(sal)
from emp
where deptno=10
group by deptno;
-- having先分组再过滤,例:
select deptno,avg(sal)
from emp
group by deptno
having deptno=10;
-- 3.如果两个可以通用,从sql优化的角度上看,尽量使用where。where先过滤掉无关数据,对执行效率有大幅提高)
(4)在分组函数中使用order by
-- 在分组函数查询语句中进行排序,可以用order by后跟分组函数&