Oracle中group by用法

Oracle中group by用法

在select 語句中可使用group by 子句將行劃分紅較小的組,一旦使用分組後select操做的對象變爲各個分組後的數據,使用聚組函數返回的是每個組的彙總信息。sql

使用having子句 限制返回的結果集。group by 子句能夠將查詢結果分組,並返回行的彙總信息Oracle 按照group by 子句中指定的表達式的值分組查詢結果。 函數

在帶有group by 子句的查詢語句中,在select 列表中指定的列要麼是group by 子句中指定的列,要麼包含聚組函數  select max(sal),job emp group by job;  (注意max(sal),job的job並不是必定要出現,但有意義)  查詢語句的select 和group by ,having 子句是聚組函數惟一出現的地方,在where 子句中不能使用聚組函數。  select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;  當在gropu by 子句中使用having 子句時,查詢結果中只返回知足having條件的組。在一個sql語句中能夠有where子句和having子句。having 與where 子句相似,均用於設置限定條件  where 子句的做用是在對查詢結果進行分組前,將不符合where條件的行去掉, 即在分組以前過濾數據,條件中 不能包含聚合函數,使用where條件顯示特定的行。 

having 子句的做用是篩選知足條件的組,即在分組以後過濾數據,條件中常常包含聚合函數,使用having 條件顯示特定的組,也可使用多個分組標準進行分組。 spa

使用order by排序時order by子句置於group by 以後 而且 order by 子句的排序標準不能出如今select查詢以外的列。對象

查詢每一個部門的每種職位的僱員數 

select deptno,job,count(*) from emp group by deptno,job排序

/****************************************************************select

記住這就好了:sql語句

在使用group by 時,有一個規則須要遵照,即出如今select列表中的字段,若是沒有在組函數中,那麼必須出如今group by 子句中。(select中的字段不能夠單獨出現,必須出如今group語句中或者在組函數中。)數據

相關文章
相關標籤/搜索