在日常写代码的时候,没有特别的注意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(*)