问答详情
源自:2-5 使用分组函数3

记一下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呢?


提问者:180416 2018-12-12 16:59

个回答

  • 巳水流年
    2019-01-09 14:31:33

    ...