NULL值类型
count(col_name) 如果col_name的值是NULL,那么COUNT是不会把它算进去的,所以想统计所有日志数要使用COUNT(1)
而想对非空列进行相关操作,需要使用col_name IS NOT NULL. 而不是LENGTH(col_name>1), 因为LENGTH(NULL)是没有结果的
---------------------------------------------------------20170608更新---------------------------------------------------------
除了上述问题,null值在逻辑统计方面也带来一些麻烦。楼主在使用时,还遇到了如下问题。
问题描述:有条件A、B、C,想统计全部满足及任意不满足其中一种情况的下的数据量。
原始代码如下:
SELECT
COUNT(1) AS all_user
, SUM(CASE WHEN A AND B AND C THEN 1 ELSE 0 END) AS ok_user
, SUM(CASE WHEN A AND B AND C THEN 0 ELSE 1 END) AS case_user
, SUM(CASE WHEN !A THEN 1 ELSE 0 END) AS not_A
, SUM(CASE WHEN !B THEN 1 ELSE 0 END) AS not_B
, SUM(CASE WHEN !C THEN 1 ELSE 0 END) AS not_C
FROM tb
按理说应该是not_A+not_B+not_C的值不小于case_user才对,