Oracle中group by用法
Oracle中group?by用法
在select?語句中可以使用group?by?子句將行劃分成較小的組,一旦使用分組后select操作的對象變為各個分組后的數據,使用聚組函數返回的是每一個組的匯總信息。
使用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?條件顯示特定的組,也可以使用多個分組標準進行分組。?
使用order?by排序時order?by子句置于group?by?之后?并且?order?by?子句的排序標準不能出現在select查詢之外的列。
查詢每個部門的每種職位的雇員數?
select?deptno,job,count(*)?from?emp?group?by?deptno,job
/****************************************************************
記住這就行了:
在使用group?by?時,有一個規則需要遵守,即出現在select列表中的字段,如果沒有在組函數中,那么必須出現在group?by?子句中。(select中的字段不可以單獨出現,必須出現在group語句中或者在組函數中。)
轉載于:https://blog.51cto.com/mydqingwa/1746742
總結
以上是生活随笔為你收集整理的Oracle中group by用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在团800运维工作总结之squid做回源
- 下一篇: 创建ACFS集群文件系统(命令方式)