簡體   English   中英

如何求和sql

[英]how to sum count sql

如何計算總數?

SELECT 
    COUNT(CASE WHEN SHP.id = 1 then 1 ELSE NULL END) as "New", 
    COUNT(CASE WHEN SHP.id = 2 then 5 ELSE NULL END) as "Accepted"
from SHP 

結果:

NEW  Accepted
 1       5

但我需要總計數結果: 6

我會做這樣的事情;

SELECT 
    COUNT(CASE WHEN id = 1 THEN 1 END) as New, 
    COUNT(CASE WHEN id = 2 THEN 5 END) as Accepted,
    COUNT(CASE WHEN id = 1 THEN 1 
               WHEN id = 2 THEN 5 END) as Total
FROM SHP 

這正是CASE語句應用於的目的,邏輯非常簡單。 這將避免必須在同一字段上執行多次計算。

需要注意的是,在這種情況下根本沒有使用THEN語句中的值,它只是執行數字的COUNT而不是執行SUM 我還刪除了ELSE NULL因為無論如何,這是CASE默認情況下會執行的操作。

如果您打算對值SUM ,請執行此操作;

SELECT 
    SUM(CASE WHEN id = 1 THEN 1 END) as New, 
    SUM(CASE WHEN id = 2 THEN 5 END) as Accepted,
    SUM(CASE WHEN id = 1 THEN 1 
             WHEN id = 2 THEN 5 END) as Total
FROM SHP 

假設數據庫中只有兩個值1和2,我們可以像這樣創建測試數據。

CREATE TABLE #SHP (id int)
INSERT INTO #SHP (id)
VALUES (1),(2)

並使用此查詢;

SELECT 
    SUM(CASE WHEN id = 1 then 1 END) as New, 
    SUM(CASE WHEN id = 2 then 5 END) as Accepted,
    SUM(CASE WHEN id = 1 THEN 1 
             WHEN id = 2 THEN 5 END) as Total
FROM #SHP 

得到這個結果;

New     Accepted    Total
1       5           6

嘗試這個:

SELECT 
    COUNT(CASE WHEN SHP.id = 1 then 1 ELSE NULL END) + 
    COUNT(CASE WHEN SHP.id = 2 then 5 ELSE NULL END) as "Total"
from SHP 

您可以將查詢包裝到子查詢中,然后執行以下操作:

SELECT SUM(New) as New, Sum(Accepted) as Accepted, Sum(New + Accepted) as Total FROM
(SELECT 
    COUNT(CASE WHEN SHP.id = 1 then 1 ELSE NULL END) as "New", 
    COUNT(CASE WHEN SHP.id = 2 then 5 ELSE NULL END) as "Accepted"
from SHP) as SubQuery

那就是如果您不想重復進行計數,而只是將兩者加在一起。

嘗試這個

with s1 as(
SELECT 
    COUNT(CASE WHEN SHP.id = 1 then 1 ELSE 0 END) as "New" 
from SHP 
),s2 as
(
SELECT  
    COUNT(CASE WHEN SHP.id = 2 then 5 ELSE 0 END) as "Accepted"
from SHP 
)
select sum("New"+  "Accepted") from s1,s2

暫無
暫無

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

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