Greatest-N-per-Group
選擇以從 id 結合最大值獲取值
我有一張這樣的桌子:
idAction | numberLine | action 1 | 1 | 1 1 | 2 | 2 1 | 3 | 7 1 | 4 | 6 2 | 1 | 2 1 | 2 | 5 1 | 3 | 3
我需要為 numberLine 為 MAX 的每個 idAction 選擇該行的操作。所以在這個例子中我應該得到兩行:
idAction | numberLine | action 1 | 4 | 6 2 | 3 | 3
我試過了
Select idAction, MAX(numberLine), action from table Group by idAction
。但它說要在組中採取行動,但如果我這樣做,它會讓我得到所有的行。
每組最大 n問題通常用視窗函式解決:
select idAction, numberLine, action from ( select idAction, numberLine, action, row_number() over (partition by idaction order by numberline desc) as rn from the_table ) t where rn = 1;
如果你可以有一個以上的 numberline 最大值,則上面將只返回其中一個。如果您想查看所有這些,請使用
dense_rank()
而不是row_number()