[英]How to get sum of sum in mysql query?
我現在要查找apiCount和javascriptCount的SQL查詢我想一個計數為apiCount + javascriptCount我該怎么做請幫助我。我嘗試在Google上找到許多解決方案,但我無法完全解決我的問題。
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 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
您可以組合兩個CASE
表達式來獲得組合的總和:
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中,最簡單的方法是可以與條件SUM
,條件成立時加一個,否則不加。
你可以試試看
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
您好,請嘗試以下查詢。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.