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
我有 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