1.GROUP BY子句
在SELECT 列表中所有未包含在組函數中的列都應該包含在GROUP BY 子句中.
如下:
SELECT deptno,AVG(sal) from emp GROUP BY deptno;(deptno為沒有包含在組函數的列)
以下查詢是錯誤的:
SELECT a,b,c,AVG(sal) from emp GROUP BY a,b;(c沒有寫在group by 后面)
===========================================================================================
多個列的分組:先按照第一個列分組,如果相同,再第二個列分組,以此類推
===========================================================================================
2.過濾分組:HAVING 子句
使用HAVING過濾分組
1.行已經被分組;
2.使用了組函數;
如:
select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;
==========================================================================================
where 后面不能使用多行函數;
==========================================================================================
GROUP BY語句的增強(主要作用:用來做報表)
select deptno,job,sum(sal) from emp group by deptno,job
+
select deptno,sum(sal) from emp group by deptno
+
selelct sum(sal) from emp
====
select deptno,job,sum(sal) from emp group by rollup(deptno,job)

查詢出來類似於報表形式
===========================================================================================
抽象:
group by rollup(a,b)
=
group by a,b
+
group by a
+
沒有group by
