Oracle中的AVG函數是計算某一列數值的平均值,而對于結果小數的處理,是一個很常見的問題。下面將通過具體的例子,詳細介紹Oracle AVG函數小數的處理。
首先,讓我們看一下使用AVG函數計算平均值時的結果:
SELECT AVG(SALARY) FROM EMPLOYEE; AVG(SALARY) ----------- 4500
如上,在沒有對AVG結果進行特殊處理時,Oracle默認結果是保留到整數位,即結果為4500。
接下來,我們將使用ROUND函數對結果進行處理,如下:
SELECT ROUND(AVG(SALARY), 2) FROM EMPLOYEE; ROUND(AVG(SALARY),2) -------------------- 4500
如上,該查詢語句使用ROUND函數將結果保留兩位小數,但結果依然只是4500,沒有出現小數。
這是為什么呢?因為在Oracle中,AVG函數在整數計算時,結果也是整數。如果要計算小數,需要將其中一項轉換為小數。
下面,我們將使用一個例子說明:
SELECT AVG(SALARY) FROM EMPLOYEE; AVG(SALARY) ----------- 4500 SELECT AVG(SALARY*1.0) FROM EMPLOYEE; AVG(SALARY*1.0) ---------------- 4500.25
如上,我們在第二個查詢語句中,使用了SALARY*1.0的形式,將SALARY轉換為小數,從而得到了結果4500.25。
除了乘以1.0,還可以使用CAST函數或TO_NUMBER函數進行轉換,如下:
SELECT AVG(CAST(SALARY AS FLOAT)) FROM EMPLOYEE; AVG(CAST(SALARYASFLOAT)) ------------------------ 4500.25 SELECT AVG(TO_NUMBER(SALARY)) FROM EMPLOYEE; AVG(TO_NUMBER(SALARY)) ---------------------- 4500.25
通過上述例子可以看出,在使用Oracle AVG函數時計算小數是個很容易出現的問題。需要特別注意的是,在使用AVG函數計算小數結果時,要將其中一項轉換為小數。
下一篇css怎么讓段落固定