SQL中的count()函数内加条件

720 阅读1分钟

最近工作中,需要做数据的统计汇总工作,发现count()函数内可以加条件计数,sql模板如下 :

SELECT
	a.office_id,
	count( a.id ) '总监测',
	count( a.report_result = 'E' OR NULL ) '异常监测'
FROM
	table1 a 
WHERE
	a.begintime >= '2021-10-01' 
	AND a.begintime <= '2021-12-20' 
GROUP BY
	a.office_id

至于为什么条件里要加上 OR NULL,原因如下:

因为当'report_result'不是'E'时 ,'report_result'='E' 结果false 不是 NULL,count在值是NULL是不统计数, (count('任意内容')都会统计出所有记录数,因为count只有在遇见null时不计数,即count(null)==0,因此前者单引号内不管输入什么值都会统计出所有记录数)至于加上or NULL , 很像其他编程里的or运算符,第一个表达式是true就是不执行or后面的表达式,第一个表达式是false 执行or后面的表达式 。 当'report_result'不为'E'时'report_result' = 'E' or NULL 的结果是NULL,count才不会统计上这条记录数。

输出结果:

0.png