1.oracle 连接查询
2.oracle 子查询
3.oracle 分组函数
3.1
3.2 rollup
SQL> --group by 作用于多列,先按照第一列进行分组,如果相同,按照第二列进行分组
SQL> --求平均工资大于2000 的部门
SQL> select deptno,job,avg(sal)
2 from emp
3 group by deptno,job
4 /
DEPTNO JOBAVG(SAL)
---------- --------- ----------
20 CLERK950
30 SALESMAN 1400
20 MANAGER2975
30 CLERK950
10 PRESIDENT 5000
30 MANAGER2850
10 CLERK1300
10 MANAGER2450
20 ANALYST3000
已选择9行。
SQL> --having 对分组后结果进行条件过滤
SQL> ed
已写入 file afiedt.buf
1 select deptno,job,avg(sal)
2 from emp
3 group by deptno
4* having avg(sal)>2000
SQL> /
select deptno,job,avg(sal)
*
第 1 行出现错误:
ORA-00979: 不是 GROUP BY 表达式
SQL> ed
已写入 file afiedt.buf
1 select deptno,avg(sal)
2 from emp
3 group by deptno
4* having avg(sal)>2000
SQL> /
DEPTNO AVG(SAL)
---------- ----------
20 2175
10 2916.66667
SQL> --rollup 方法的增强
SQL> select deptno,job,sum(sal)
2 from emp
3 group by rollup(deptno,job)
4 /
DEPTNO JOBSUM(SAL)
---------- --------- ----------
10 CLERK1300
10 MANAGER2450
10 PRESIDENT 5000
10 8750
20 CLERK1900
20 ANALYST6000
20 MANAGER2975
20 10875
30 CLERK950
30 MANAGER2850
30 SALESMAN 5600
30 9400
29025
已选择13行。