I have sql query for find apiCount and javascriptCount now i want to one count as apiCount + javascriptCount How can i do that please help me.I try to find many solution on google but i can't get exactly solution of my problem.
SELECT display ,
SUM(CASE WHEN category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401) THEN 1 ELSE 0 END) apiCount,
SUM(CASE WHEN category = 1 THEN 1 ELSE 0 END) javascriptCount
FROM error
WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY display
this is my query i want to sum of apiCount and javascriptCount in same query.
Use '+' operator to make it total Or you can combined the both logic to count it
SELECT display ,
SUM(CASE WHEN category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401) THEN 1 ELSE 0 END)+SUM(CASE WHEN category = 1 THEN 1 ELSE 0 END)
totalCount,occurance
FROM error WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY display
OR
SELECT display ,
SUM(CASE WHEN (category i=2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401)) OR category = 1 THEN 1 ELSE 0 END)
totalCount,occurance
FROM error WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY display
You can combine the two CASE
expressions to get the combined sum:
SELECT display ,
SUM(CASE WHEN category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401) THEN 1 ELSE 0 END) apiCount,
SUM(CASE WHEN category = 1 THEN 1 ELSE 0 END) javascriptCount,
SUM(CASE WHEN category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401) OR category = 1 THEN 1 ELSE 0 END) totalCount,
occurance
FROM error
WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY display
Wrap your original query up in a derived table. Then you can calculate apiCount + javascriptCount:
select dt.*, apiCount + javascriptCount
from
(
SELECT display ,
SUM(CASE WHEN category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401) THEN 1 ELSE 0 END) apiCount,
SUM(CASE WHEN category = 1 THEN 1 ELSE 0 END) javascriptCount,
occurance
FROM error
WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY display
) dt
In mysql the simplest you can SUM
with the condition, the condition established add one, otherwise didn't add.
You can try this.
SELECT display,
SUM(category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401)) apiCount,
SUM(category = 1 ) javascriptCount,
SUM((category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401)) OR category = 1) totalCount,
occurance
FROM error
WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY display
Hi Please try the following query.
SELECT display , SUM(CASE WHEN (category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401)) -- apiCount OR (category = 1) -- javascriptCount THEN 1 ELSE 0 END) apiCount_and_javascriptCount, occurance FROM error WHERE `occurance` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) GROUP BY display
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.