我有以下數據返回之和對應的類別字段最大值的
ID CATEGORY VALUE
x A 10
x B 2
x C 1
y B 11
y A 6
z D 13
z E 0
我想組由ID和類別使得值求和爲單一ID和類別返回的是相應的最大值在ID組內。
結果看起來像這樣。
ID CATEGORY VALUE
x A 13
y B 17
z D 13
這在SQL中可能嗎?
感謝
我有以下數據返回之和對應的類別字段最大值的
ID CATEGORY VALUE
x A 10
x B 2
x C 1
y B 11
y A 6
z D 13
z E 0
我想組由ID和類別使得值求和爲單一ID和類別返回的是相應的最大值在ID組內。
結果看起來像這樣。
ID CATEGORY VALUE
x A 13
y B 17
z D 13
這在SQL中可能嗎?
感謝
嘗試窗函數排名:
select id, category, value
from (
select id, category, sum(value) over (partition by id) as value,
rank() over (partition by id order by value desc) as rnk
from mytable) t
where rnk=1;
如果你有相同的值重複,它會同時顯示。 (如果'x','B'的值爲10):
id cat value
x A 21
x B 21
y B 17
z D 13
完美,謝謝! –
@ e.shee如果你認爲這個答案是完美的,那麼你應該標記和upvote這個答案。 –
我試圖upvote並標記爲已解決但仍然收到錯誤。稍後再試。 –
如果您有*兩個*最大值和相同的'Id',該怎麼辦? E.E. '(x,A,10)'和'(x,Z,10)'記錄? –
沒有考慮到這一點。我所看到的問題不會有這種情況,但這是一個有效的觀點。大多數情況下,我將擁有一個具有較大價值的類別,而其他類別的比較或零將是非常小的。如果我確實有兩個最大值,我會返回這兩個類別。 –