原創:oracle聚合函式介紹
聚合函式對一組行中的某個列執行計算執行計算並返回單一的值。聚合函式忽略空值。聚合函式經常與 SELECT 語句的 GROUP BY 子句一同使用,所以有的時候也把其稱之為分組函式。
在下面的介紹過程中我們還重點講解了group by having等知識點,希望你所有收穫!
在下面的介紹過程中我們還重點講解了group by having等知識點,希望你所有收穫!
常見的分組函式有:
函式名稱 函式描述
Count 返回找到的記錄數
Min 返回一個數字列或計算列的最小值
Max 返回一個數字列或計算列的最大值
Sum 返回一個數字列或計算列總和
avg 返回一個數字列或計算列的平均值
分組函式的語法:
SELECT [column,] group_function(column), ...
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column];
//返回總記錄數 //* 代表的是:一條記錄
SQL> select count(*) from emp;
//返回comm不為空的總記錄數
SQL> select count(comm) from emp;
//COUNT(DISTINCT expr) 返回 expr非空且不重複的記錄總數
SQL> select count(distinct(sal)) from emp;
注意:組函式忽略空值。
//返回所有員工的平均工資
SQL> select avg(nvl(sal,0)) from emp;
注意:NVL函式使分組函式無法忽略空值
//返回員工編號最小值
SQL> select min(empno) from emp;
//返回員工工資最大值
SQL> select max(sal) from emp;
//求該月本公司發出的工資總額
SQL> select sum(comm)+sum(sal) from emp;
SQL> select sum(nvl(sal,0)+nvl(comm,0)) from emp;
Group by子句
Group By語句從英文的字面意義上理解就是“根據(by)一定的規則進行分組(Group)”。它的作用是通過一定的規則將一個資料集劃分成若干個小的區域,然後針對若干個小區域進行資料處理。 如果在查詢的過程中需要按某一列的值進行分組,以統計該組內資料的資訊時,就要使用group by子句。不管select是否使用了where子句都可以使用group by子句。
注意:group by子句一定要與分組函式結合使用,否則沒有意義。
//求出每個部門的員工人數
SQL> select deptno,count(*) as "人數" from emp group by deptno;
//求出每個部門的員工的平均工資
SQL> select deptno,avg(nvl(sal,0)) from emp group by deptno;
//注意:group by 子句中的列不必包含在SELECT 列表中
SQL> select avg(nvl(sal,0)) from emp group by deptno;
//求出某個部門中相同職位的員工人數 group by 後可以跟多個分組的欄位
SQL> select deptno,job,count(*) from emp group by deptno,job order by deptno;
非法使用組函式
1、 所用包含於SELECT 列表中,而未包含於組函式中的列都必須包含於 GROUP BY 子句中。
舉例:
SQL> select empno,count(job) from emp;
正確寫法如下:
SQL> select empno,count(job) from emp group by empno;
2、 不能在 WHERE 子句中使用組函式(注意)。
SQL> select deptno from emp where count(job)>0 group by deptno;
備註:ORA-00934: 此處不允許使用分組函式
Having 子句
HAVING 子句對 GROUP BY 子句設定條件的方式與 WHERE 子句和 SELECT 語句互動的方式類似。WHERE 子句搜尋條件在進行分組操作之前應用;而 HAVING 搜尋條件在進行分組操作之後應用。HAVING 語法與 WHERE 語法類似,但 HAVING 可以包含聚合函式。HAVING 子句可以引用選擇列表中出現的任意項。
備註:having子句通常與group by子句結合使用
語法:
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
//查詢部門的員工人數大於五部門編號
SQL> select deptno,count(*) from emp group by deptno having count(*)>5;
備註:分組函式可以巢狀
巢狀函式
函式可以巢狀。一個函式的輸出可以是另一個函式的輸入。運算元有一個可繼承的執行過程。但函式的優先權只是基於位置,函式遵循由內到外,由左到右的原則.
巢狀函式可以包括在組函式中巢狀單行函式,或者組函式巢狀入單行函式或組函式中
總結:整個查詢語句的語法格式如下:
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
以上內容歸redarmy_chen所有,如需轉載請附帶出處,如有疑問請傳送至redarmy_chen@qq.com
相關文章
- oracle常用函式介紹Oracle函式
- 原創:oracle 子查詢介紹Oracle
- 原創:oracle DML介紹與使用Oracle
- Oracle OCP(04):聚合函式Oracle函式
- stoi函式介紹函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- funclib函式庫介紹函式
- cuda函式庫介紹函式
- javascript函式中with的介紹JavaScript函式
- Dart建構函式介紹Dart函式
- SQL-函式 - 聚合函式SQL函式
- 原創:springIOC介紹第二講Spring
- Django:聚合函式Django函式
- Stream聚合函式函式
- 快速介紹幾個JS函式JS函式
- ES6 Generator 函式介紹函式
- javascript中generator函式的介紹JavaScript函式
- javascript高階函式的介紹JavaScript函式
- 原創:ServletContext應用介紹總結ServletContext
- Django(18)聚合函式Django函式
- 簡單介紹JS函式防抖和函式節流JS函式
- Python 偏函式介紹及應用Python函式
- Hive的基本介紹以及常用函式Hive函式
- Python之函式的相關介紹Python函式
- Angular 14 新的 inject 函式介紹Angular函式
- einsum函式介紹-張量常用操作函式
- 機器學習基本函式介紹機器學習函式
- 原創:spring入門介紹第一講Spring
- 【Oracle】Oracle logminer功能介紹Oracle
- ORACLE OWI介紹Oracle
- Oracle ADR介紹Oracle
- 用大白話介紹柯里化函式函式
- 函式中的apply,call入門介紹函式APP
- Go函式介紹與一等公民Go函式
- SparkSQL介紹並實現開窗函式SparkSQL函式
- python 介紹一個很好用的函式Python函式
- Python 內建函式:——locals 和 globals介紹Python函式
- R語言kohonen包主要函式介紹R語言函式