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

时间:2016-10-27 06:09:24

标签: mysql sql count sum where

我有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中实现这一目标。 提前致谢

3 个答案:

答案 0 :(得分:0)

这是一种结合方式

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' ); 

答案 1 :(得分:0)

请尝试这个,这是非常简单的查询。

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
如果您想要所有的总和,则上面的

将返回个人计数和总和,然后只需删除 group by 子句。

答案 2 :(得分:0)

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