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 JOB AVG(SAL)
---------- --------- ----------
20 CLERK 950
30 SALESMAN 1400
20 MANAGER 2975
30 CLERK 950
10 PRESIDENT 5000
30 MANAGER 2850
10 CLERK 1300
10 MANAGER 2450
20 ANALYST 3000
已选择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 JOB SUM(SAL)
---------- --------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 8750
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2975
20 10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 9400
29025
已选择13行。