第五章:组函数
组函数(多行函数)默认情况下组函数忽略null
select min(sal),max(sal),sum(sal),avg(sal) from emp;
select min(hiredate),max(hiredate) from emp;
select min(ename),max(ename) from emp;
select count(*) from emp;
select count(*) from emp where deptno=30;
select count(comm) from emp;
select count(distinct deptno) from emp;
select avg(distinct sal) from emp;
select avg(nvl(comm,0)) from emp;
分组计算(group by):
select sum(sal) from emp group by deptno;
select deptno,sum(sal) from emp group by deptno;
--error
select deptno,sum(sal) from emp;
select deptno,job,sum(sal) from emp group by deptno,job order by 1;
过滤组函数运算后的结果(having):
select deptno,avg(sal) from emp
having avg(sal)>2000
group by deptno;
重复的工资值:
select sal,count(sal) from emp
having count(sal)>1
group by sal;
每年参加工作的雇员有多少人?
select to_char(hiredate,'yyyy') year,count(*) total
from emp
group by to_char(hiredate,'yyyy');
--行列转换
create table test (a int,b varchar2(1),c varchar2(7));
insert into test values (1,'a','BUMEN');
insert into test values (1,'b','BIANHAO');
insert into test values (1,'c','ZHIWEI');
insert into test values (2,'d','BUMEN');
insert into test values (2,'e','BIANHAO');
insert into test values (2,'f','ZHIWEI');
commit;
--打印如下结果集
A BUMEN BIANHAO ZHIWEI
----- --------- -------- --------
1 a b c
2 d e f
col BUMEN for a7
col BIANHAO for a7
col ZHIWEI for a7
select a,
max(decode(c,'BUMEN',b)) BUMEN,
max(decode(c,'BIANHAO',b)) BIANHAO,
max(decode(c,'ZHIWEI',b)) ZHIWEI
from test
group by a;