SQL 選取每個分組的某一條資料

2021-07-31 21:38:49 字數 845 閱讀 6759

背景:有時候我們需要對多條資料按照某個字段分組,然後選取某組中的某乙個記錄。

例如-同一運單 有多條裝車記錄時 取最大時間的記錄

sql 實現

1.sqlserver:

select

waybill_id, -- 運單號

sigin_time, -- 簽到時間

unload_time, -- 卸車時間

loading_time, -- 裝車時間

send_time, -- 發車時間

create_time -- 記錄建立時間

from (select waybill_id,

sigin_time,

unload_time,

loading_time,

send_time,

create_time,row_number() over (partition by waybill_id

order by create_time desc) row_no 

from  tms_tms_loading_details a   )  b

where row_no=1

2.mysql:

select

waybill_id, -- 運單號

sigin_time, -- 簽到時間

unload_time, -- 卸車時間

loading_time, -- 裝車時間

send_time, -- 發車時間

max(create_time) -- 記錄建立時間

from  tms_tms_loading_details

group by waybill_id

Oracle分組,取每個分組的第一條資料

最近有個有個業務需求 springboot專案集合mybatis 需要查詢分組後,取每組的第一條資料 oracle資料庫 可以在業務 中實現,但是過於繁瑣,後來查閱oracle的函式,得出僅僅在sql中即可實現,非常簡潔,簡化 sql如下 select from select t user.row ...

排序後分組取每個分組的第一條資料

select p1.from select from table p0 where p0.種類編號 in 10066656,10115244 order by p0.asc,p0.主鍵id desc limit 1000000 p1 group by p1.種類編號 因為group by無法放到or...

SQL 獲取每個使用者最新的一條資料記錄

被問這個問題的時候我的第一想法居然是用order by。唉,好好的max 放著不用。sql示例 獲取檔案上傳記錄表中,每個使用者產生的最新一條記錄 select from file record as a inner join select file author,max file ctime as...