如何在mysql查询中获取和的和?
我有sql查询查找apiCount和javascriptCount现在我想要一个计数作为apiCount+javascriptCount我怎么做请帮助我。我试图在谷歌上找到许多解决方案,但我不能得到我的问题的确切解决方案如何在mysql查询中获取和的和?,mysql,sql,Mysql,Sql,我有sql查询查找apiCount和javascriptCount现在我想要一个计数作为apiCount+javascriptCount我怎么做请帮助我。我试图在谷歌上找到许多解决方案,但我不能得到我的问题的确切解决方案 SELECT display , SUM(CASE WHEN category = 2 AND (statusCode != -1 AND statusCode != 400 AND statusCode != 401) THEN 1 ELSE 0 END) apiC
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
这是我的查询,我想在同一个查询中求apiCount和javascriptCount之和。使用“+”运算符将其相加 或者您可以将这两种逻辑结合起来进行计数
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
或
可以组合两个大小写表达式以获得组合的和:
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
将原始查询包装到派生表中。然后您可以计算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
在mysql中最简单的可以和条件求和,条件建立后加一个,否则不加 你可以试试这个
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
您好,请尝试以下查询 选择显示, 当 类别=2和状态代码!=-1和状态代码!=400和状态码!=401-apiCount 或category=1-javascriptCount 然后1或0结束apiCount和javascriptCount, 发生 从错误
其中'occurance`>=DATE\u subcommurate,INTERVAL 7 DAY GROUP BY displayYou second suggestion将不起作用,因为类别为1时也会检查状态码。这更好,但是类别in=2有语法错误。我注意到表达式occurance没有分组函数。这意味着该值是从所选的所有行中随机选择的。@jarlh然后我提到的表达式在三小时前就被删除了。你仍然可以在一些答案中找到它。@KIKOSoftware,我理解。对不起打扰你了。
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