[英]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.