记一下avg逻辑
SQL> select * from tb1212_1;
A B C
---- ---- ----
0
1
1
1
1
1
1
11 rows selected
(首行收据为 (0,null,null),最后四行为(null,null,null))
SQL> select sum(a*3/2+7)/count(sum(a*3/2+7)),avg(a*3/2+7),count(sum(a*3/2+7)),count(a*3/2+7) from tb1212_1 group by a;
SUM(A*3/2+7)/COUNT(SUM(A*3/2+7)) AVG(A*3/2+7) COUNT(SUM(A*3/2+7)) COUNT(A*3/2+7)
-------------------------------- ------------ ------------------- -------------------- ---------------------- --------
7.75 7.75 2 2
所以avg(expr)的算法估计就是 sum(expr)/count(expr) ,而expr中如果含有一个或多个字段,其中有一个为null,那sum(expr)、count(expr)当前这行就为null;
其实为什么count(sum(a*3/2+7))的值是2呢?