Oracle 資料去重

2021-09-27 09:55:34 字數 791 閱讀 5332

假設資料表a,3個字段 mid(表id),bjsj(報警時間),val(資料值)。篩選出2019-09-20~2019-09-25時間段內記錄,每塊表的最後一條報警記錄。

做法:按條件查詢出符合條件記錄,然後取每塊表的報警時間為最大的一條記錄。

oracle資料庫提供了乙個函式 row_number() 用於給資料庫表中的記錄進行標號,在使用的時候,其後還跟著乙個函式 over(),而函式 over() 的作用是將表中的記錄進行分組和排序。兩者使用的語法為:

row_number(

)over

(partition

by column1 order

by column2)

其中:partition by:表示分組 order by:表示排序

函式的含義為:將表中的記錄按欄位 column1進行分組,按欄位 column2 進行排序。

因此,實現我們的篩選記錄的sql語句如下,按mid分組,然後按bjsj倒序排序,取第一條記錄。

select

*from

(select mid,bjsj,val,row_number(

)over

(partition

by mid order

by bjsj desc

) rn from a where bjsj>=

'2019-09-20'

and bjsj<=

'2019-09-25'

)where rn=

1

oracle 資料庫 去重查詢

oracle 資料庫多字段去重 方法介紹 distinct 關鍵字 group by row number over partition by 列 order by 列 desc 我的需求是 根據某幾列去重 查詢出去重後的全部資訊。最後我選擇的是第三種方法。我的想法 我想找出一種更簡單的方法去 實現...

Oracle 分頁查詢與資料去重

oracle下select語句每個結果集中都有乙個偽欄位 偽列 rownum存在。rownum用來標識每條記錄的行號,行號從1開始,每次遞增1。rownum是虛擬的順序值,前提是先排序 使用rownum需注意 1.rownum的是在取資料的時候產生的序號 當rownum和order by一起使用時,...

hive 列表去重 Hive 資料去重

實現資料去重有兩種方式 distinct 和 group by 1.distinct消除重複行 distinct支援單列 多列的去重方式。單列去重的方式簡明易懂,即相同值只保留1個。多列的去重則是根據指定的去重的列資訊來進行,即只有所有指定的列資訊都相同,才會被認為是重複的資訊。1 作用於單列 se...