postgre sql分組後排序取前 後幾個值

2022-08-26 15:33:13 字數 693 閱讀 1027

這是個很常見的需求,我一般的寫法是

select * from test t

where not exit(select 1 from test where group=t.group and t.time >time )

其中,group是分組字段,time是排序字段,上一句sql是按group分組,取每一組最新時間的資料

但是有一天資料出問題了,死活分不了組,於是乎尋找其他解決方案

select

*from test from

(select test.*,row_number() over(partition by

group

order

by time desc) rn from

test) t

where rn =

1

這個row_number是幹啥子的呢,簡單的說row_number()從1開始,為每一條分組記錄返回乙個數字,這裡的row_number() over (order by xlh desc) 是先把xlh列降序,再為降序以後的沒條xlh記錄返回乙個序號。

row_number() over (partition by col1 order by col2) 表示根據col1分組,在分組內部根據 col2排序,而此函式計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)

mysql 先分組 後排序

mysql 正常的邏輯 select from table group by a order by b desc 會預設 先分組再排序 但是實際的開發過程中難免會遇到先排序 後分組的情況 這個時候 就要想其他的方法 1 mysql 5.7 以下 select from select from tab...

BI 擴充套件後排序

頂 20 最後更新日期 2015 8 14 示例1.問題描述 若模板中希望按照某列進行排序,而此列是無法用資料集函式還原的即無法使用高階排序進行排序設定,為此finereport提供了擴充套件後排序,滿足一切排序的需求。2.實現方法 2.1 設定方法 右擊 單元格 擴充套件屬性或者選中單元格,在右側...

postgresql 聚集函式加分組

表 id name 1 a2 b 1 bselect id,group concat name from group by id 得出的結果為 id group concat name 1 a,b 2 bpostgresql沒有現成的group concat聚集函式,但可以自定義聚集函式,所以可以容...