SQL:包含 where 子句的 count 语句的总和

SQL: Sum of count statements containing where clause

我有 3 个计数语句,我需要将它们合并并求和。

SELECT COUNT(status) 
FROM tableA 
WHERE env='test' 
AND deploy_date='2016-10-19' 
AND  platform='MA' 
AND server='B' 
AND status='5';

SELECT COUNT(status) 
FROM tableA 
WHERE env='test' 
AND deploy_date='2016-10-19'  
AND  platform='MA'  
AND server='B' 
AND status='3';

SELECT COUNT(status) 
FROM tableA 
WHERE env='test' 
AND deploy_date='2016-10-19' 
AND  platform='MA' 
AND server='B' 
AND status='1'; 

我试过了

SELECT (select count(status) 
FROM tableA 
WHERE env='test' 
AND deploy_date='2016-10-19' 
AND  platform='MA' 
AND server='B' and status='5'; ) + 
(SELECT COUNT(status) 
FROM tableA WHERE env='test' 
AND deploy_date='2016-10-19' 
AND  platform='MA' 
AND server='B' AND status='3';) + 
(SELECT COUNT(status) 
FROM tableA
WHERE env='test' 
AND deploy_date='2016-10-19' 
AND  platform='MA' 
AND server='B' AND status='1';)

但是出现语法错误。我错过了什么?在 MySQL 中是否有更好的方法来完成此操作? 提前致谢

这是一种组合方式

SELECT count(1)
FROM   tableA
WHERE  env = 'test'
       AND deploy_date = '2016-10-19'
       AND platform = 'MA'
       AND server = 'B'
       AND status IN ( '5', '3', '1' ); 

请试试这个,很简单的查询。

SELECT status, count(status) from tableA 
WHERE env='test' AND deploy_date='2016-10-19' AND platform='MA' AND server='B' AND status in ('1','3','5')
Group by status

上面的 return 个人计数和总和,如果你想要所有的总和,那么只需删除 group by 子句。

SELECT count(status)
FROM   tableA 
WHERE  env = 'test'
   AND deploy_date = '2016-10-19'
   AND platform = 'MA'
   AND server = 'B'
   AND status IN ( '5', '3', '1' );

可以将语句合二为一,状态不同,其余的过滤都是一样的。

对于状态统计,在 SQL 脚本末尾添加 group by 子句 Group By Status

SELECT Status,count(status)
FROM   tableA
WHERE  env = 'test'
   AND deploy_date = '2016-10-19'
   AND platform = 'MA'
   AND server = 'B'
   AND status IN ( '5', '3', '1' )
Group By Status