簡體   English   中英

SUM SQL 中的一列,基於另一列中的 DISTINCT 值,GROUP BY 第三列

[英]SUM a column in SQL, based on DISTINCT values in another column, GROUP BY a third column

對於以下 SQL 問題,我將不勝感激:

我有一個包含 3 列的表:

ID    Group    Value
1     1        5
1     1        5
1     2        10    
1     2        10
1     3        20
2     1        5
2     1        5
2     1        5
2     2        10
2     2        10
3     1        5
3     2        10
3     2        10
3     2        10
3     4        50

我需要按 ID 分組,並且我想根據 Group 中的 DISTINCT 值對這些值求和。 因此,即使對於特定 ID,它可能多次出現,但組的值只計算一次。

所以對於 ID 1、2 和 3,它應該分別返回 35、15 和 65。

ID    SUM
1     35
2     15
3     65

請注意,每個組不一定具有唯一值

謝謝

CTE 將刪除所有重復項,因此如果 ID 和 Group 的值存在差異,則會將其計算在內。

下一個 SELECT 將帶有“GROUP By”ID

對於 Pstgres 你會得到

WITH CTE as (SELECT DISTINCT "ID", "Group", "Value" FROM tablA ) SELECT "ID", SUM("Value") FROM CTE GROUP BY "ID" ORDER BY "ID"
 身份證 | 總和 -: |  --: 1 |  35 2 |  15 3 |  65

db<> 在這里擺弄

鑒於我們目前所知道的,這就是我的想法......

CTE/Inline 視圖在求和發生之前消除重復項。

WITH CTE AS (SELECT DISTINCT ID, Group, Value FROM TableName)
SELECT ID, Sum(Value)
FROM CTE
GROUP BY ID 

或者

SELECT ID, Sum(Value)
FROM (SELECT DISTINCT * FROM TableName) CTE
GROUP BY ID

暫無
暫無

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

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