Postgresql
獲取最高值
我有以下數據:
account_id note_id size id ---------- ------- ------ -------- 48 1554 196036 28229509 48 1554 18777 28229588 48 1554 4861 28229566 48 1559 176406 28229516 48 1559 82041 28229521 48 1559 3063 28229541 48 1583 92150 28229514 48 1583 3495 28229501 48 1583 119203 28229534 8764 25556838 5126 28229567 8764 25556838 340618 28229508
我想
size
為每個 note_id 獲取列上最大值的 id。例子:
note_id: 25556838 size: 340618 id: 28229508 note_id: 1583 size: 119203 id: 28229534
我怎樣才能得到這些數據?
可以使用視窗函式解決針對每個組的最大 n 的查詢:
select note_id, size, id from ( select note_id, size, id, row_number() over (partition by note_id order by size desc) as rn from the_table ) t where rn = 1;
以上是標準 SQL,但 Postgres 作為另一個(專有)功能可用於此:
select distinct on (note_id) note_id, size, id from the_table order by node_id, size desc;
該
distinct on ()
解決方案通常比使用視窗函式的解決方案更快。