轉轉轉 oracle 去重並按時間排序取第一條

2022-01-19 08:23:29 字數 567 閱讀 9412

select  t.*from (select a.*, row_number() over(partition by 需要分組的字段 order by 更新時間 desc) rw  

from 表 a) t

where t.rw = 1

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

與rownum的區別在於:使用rownum進行排序的時候是先對結果集加入偽劣rownum然後再進行排序,而此函式在包含排序從句後是先排序再計算行號碼。 

row_number()和rownum差不多,功能更強一點(可以在各個分組內從1開始排序)。 

rank()是跳躍排序,有兩個第二名時接下來就是第四名(同樣是在各個分組內) 

dense_rank()也是連續排序,有兩個第二名時仍然跟著第三名。相比之下row_number是沒有重複值的。 

oracle 分析函式 row_number(),返回乙個整數值(>=1);

Oracle去重 並按時間排序取第一條

需求 按圖所示,根據gfwtf id 去重,並去重的條件是去最新建立的一條 partition by 需要分組的字段 order by 更新時間 desc rw from 表 a t where t.rw 1select from 表名 a inner join select gfwtf id,ma...

Oracle 資料去重

假設資料表a,3個字段 mid 表id bjsj 報警時間 val 資料值 篩選出2019 09 20 2019 09 25時間段內記錄,每塊表的最後一條報警記錄。做法 按條件查詢出符合條件記錄,然後取每塊表的報警時間為最大的一條記錄。oracle資料庫提供了乙個函式 row number 用於給資...

oracle分頁與去重

查詢emp表中的記錄 分頁,每一頁顯示5條記錄 查詢第二頁的資料 select from select ename,sal,deptno,rownum rw from emp where rw 5 and rw 10 查詢第二頁的資料,並排序 將重覆記錄保留一條 如上,test2表中有4條重複資料,...