簡體   English   中英

如何對兩個SUM SQL求和?

[英]How to SUM result both SUMs SQL?

使用此查詢,我嘗試對兩個SUM函數的結果求和:

select 
DAY(created_at) AS day, 
SUM(if(status = '1', 1, 0)) AS result, 
SUM(if(status = '2', 1, 0)) AS noresult,
SUM(result + noresult)
from `clients` where `doctor_id` = 2 and MONTH(created_at) = MONTH(CURRENT_TIMESTAMP) group by `day`

我嘗試在這一行中這樣做:

SUM(result + noresult)

嘗試這個:

select 
    DAY(created_at) AS day, 
    SUM(if(status = '1', 1, 0)) AS result, 
    SUM(if(status = '2', 1, 0)) AS noresult,
    SUM(if(status in ('1', '2'), 1, 0)) 
from `clients` 
where `doctor_id` = 2 and MONTH(created_at) = MONTH(CURRENT_TIMESTAMP) 
group by `day`

您不能在選擇列名稱中使用別名,而必須重復代碼

select 
DAY(created_at) AS day, 
SUM(if(status = '1', 1, 0)) AS result, 
SUM(if(status = '2', 1, 0)) AS noresult,
SUM(if(status = '1', 1, 0)) + SUM(if(status = '2', 1, 0)) AS all_result

from `clients` where `doctor_id` = 2 and MONTH(created_at) = MONTH(CURRENT_TIMESTAMP) group by `day`

您必須重復代碼,因為不同的SQL子句是按照特定的順序處理的(首先是從那里開始,然后是select和group by ....等。),因此在select解析時別名不能用於sql引擎

正如其他幾個人所述,您不能在select語句中使用別名。 但是,為了使其更整潔,您可以合並兩個條件,而不是對兩個SUM字段求和。

select 
DAY(created_at) AS day, 
SUM(if(status = '1', 1, 0)) AS result, 
SUM(if(status = '2', 1, 0)) AS noresult,
SUM(if(status = '1' OR status = '2', 1, 0)) AS newcolumn
from `clients` where `doctor_id` = 2 and MONTH(created_at) = MONTH(CURRENT_TIMESTAMP) group by `day`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM