記一下avg邏輯
SQL> select * from tb1212_1;
? ?A? ? B? ? C
---- ---- ----
? ?0? ? ??
? ?1? ? ??
? ? ? ? 1?
? ? ? ? ? ? ?1
? ?1? ? ??
? ? ? ? 1?
? ? ? ? ? ? ?1
11 rows selected
(首行收據(jù)為 (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呢?
2019-01-09
...