Db2
MAX 值的 DB2 SUM,單個表
我查看了許多提出和回答的問題,但似乎找不到我的答案,甚至將提供的答案混雜到我的查詢中 - 大多數情況下都會失敗,其餘的會提供垃圾結果。
請注意,這是針對 IBM DB2 v9.7 的! 不是SQL Server 或任何更新的東西。
我有一個包含準不同行的表,但沒有鍵。根據所有欄位,找到重複項的機率幾乎為零,並且重複的機率隨著查詢中選擇的欄位越少而增加。在這一點上,我基本上可以接受。欄位比下面列出的要多,我添加了一個鍵僅供參考…
偽查詢
select sum(max(NumImages)) from table where Source in ('A','B') and Event='190'
桌子
Key ID NumImages Source Event 1 1 4 A 190 2 1 - - 247 3 1 2 B 190 4 1 - - 134 5 2 7 C 190 6 2 2 A 190 7 2 1 B 190 8 2 5 A 190 9 3 5 A 190 10 3 - - 247 11 3 - - 134 12 3 - - 815 13 4 2 A 190 14 4 9 A 247 15 4 5 B 190 16 4 4 B 134
參數
Source in ('A','B') Event = '190' NumImages is not null
(*我認為前面的參數不會發生這種情況)
輸出
ID Sum 1 6 2 6 3 5 4 7
因為:
- 1 = 6; 鍵 1 和 3 對於事件 190 和源 A 或 B 都是最大值
- 2 = 6; 鍵 8(5 - 事件 190 源 A 的最大值)+ 鍵 7(1 - 事件 190 源 B 的最大值)。源 C(鍵 5)被忽略。
- 3 = 5 ; 鍵 9 是唯一匹配參數的值
- 4 = 7; 鍵 13 和 15 是唯一與事件 190 匹配的鍵,即使 Source 和 NumImages 具有與其他參數匹配的值。
我認為你想要多個聚合:
首先找到每個 ID-Source 組合的最大值,然後為每個 ID 求和:
select ID, sum(MaxNumImages) as SumMaxNumImages from ( select ID, max(NumImages) as MaxNumImages from table where Source in ('A','B') and Event = '190' and NumImages is not null group by ID, Source ) as agg group by ID ;