Reputation: 509
I have 3 count statements, which I need to combine and take a sum of.
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';
I tried
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';)
But getting syntax error. What am I missing? Is there a better way to accomplish this in MySQL. Thanks in advance
Upvotes: 0
Views: 87
Reputation: 81
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' );
You can combine the statement into one, status differ, rest all the filtration are same.
For status wise count, add group by clause Group By Status
at the end of the SQL script.
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
Upvotes: 1
Reputation: 1587
Please try this one, it is very simple query.
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
above will return individual count and sum if you want sum of all then just remove group by clause.
Upvotes: 1
Reputation: 93754
Here is one way to combine
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' );
Upvotes: 1