Oracle中的avg()函數用于計算一個數值列的平均值,并返回一個浮點數類型的結果。
舉例說明,假設我們有如下一個表emp:
CREATE TABLE emp ( empno NUMBER(4) NOT NULL, ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) );
現在我們想計算出所有員工的平均薪水,我們可以使用以下sql語句:
SELECT AVG(sal) FROM emp;
上述代碼中的AVG函數將會計算emp表中所有員工的薪水總和,除以員工總數,最終得到平均值。
除了能計算數值列的平均值,avg()函數還可以用于計算其他數據類型的平均值。例如,我們可以使用以下sql語句計算出員工入職天數的平均值:
SELECT AVG(sysdate-hiredate) FROM emp;
上述代碼中的AVG函數將會計算emp表中所有員工入職天數的總和,除以員工總數,最終得到平均值。
除了基本的avg()函數,Oracle還提供了一些擴展的avg()函數,例如:
SELECT AVG(sal) Within GROUP (ORDER BY deptno) FROM emp;
上述代碼中的Within GROUP子句用來指定按照哪個列進行分組計算平均值。在這里,我們按照deptno列進行分組,并計算每個部門的平均薪水。
需要注意的是,avg()函數并不會忽略空值或者無效值。如果需要排除空值或者無效值,需要對查詢結果進行篩選。
綜上,avg()函數是Oracle中計算平均值最基本的函數之一,可以用于計算數值列、日期列等類型的平均值,并提供了多種擴展功能可以根據需要使用。