oracle數據庫GROUP BY 子句


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM