在日常寫代碼的時候,沒有特別的注意avg(字段)組函數。今天仔細聊一聊avg()函數的使用注意事項
SELECT AVG(EMP.COMM) FROM EMP; -- 采用avg組函數的時候,會自動忽略掉為字段值為空值的選項。
SELECT SUM(EMP.COMM) / COUNT(*) AS "AVG(EMP.COMM)" FROM EMP; -- count(*)數量為 所有的記錄的數量。
SELECT SUM(EMP.COMM) / COUNT(EMP.COMM) AS "AVG(EMP.COMM)" FROM EMP; -- count(字段) 字段為不為空的記錄的數量。
SELECT AVG(NVL(EMP.COMM,0)) AS "AVG(EMP.COMM)" FROM EMP; -- oracle數據庫中 NVL(字段,值) 字段如果為空,則 用值替代。 如果為mysql數據庫,NVL()替換為IFNULL(字段,值)
下面說一下,avg(字段) 的具體的使用區別
AVG(字段) == SUM(字段) / COUNT(字段)
AVG(字段) != SUM(字段) / COUNT(*)
AVG(NVL(字段,0)) == SUM(字段) / COUNT(*)