`
javasogo
  • 浏览: 1817324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用Oracle的row_number() over函数过滤重复数据,取最新的记录

阅读更多

问题:在项目中有一张设备检测信息表DEVICE_INFO_TBL, 每个设备每天都会产生一条检测信息,现在需要从该表中检索出每个设备的最新检测信息。也就是device_id字段不能重复,消除device_id字段重复的记录,而且device_id对应的检测信息test_result是最新的。

解决思路:用Oracle的row_number() over函数来解决该问题。

解决过程:

1.查看表中的重复记录

select
t.id,
t.device_id,
t.update_dtm,
t.test_result
from DEVICE_INFO_TBL t<!--StartFragment -->
查看重复数据
2.标记重复的记录
select
t.id,
t.device_id,
t.update_dtm,
t.test_result,
row_number() OVER(PARTITION BY device_id ORDER BY t.update_dtm desc) as row_flg
from DEVICE_INFO_TBL t
<!--StartFragment -->
标记重复记录
3.过滤重复数据,取得最新的记录
select
temp.id,
temp.device_id,
temp.update_dtm,
temp.test_result
from (
select
t.id,
t.device_id,
t.update_dtm,
t.test_result,
row_number() OVER(PARTITION BY device_id ORDER BY t.update_dtm desc) as row_flg
from DEVICE_INFO_TBL t) temp
where temp.row_flg= '1'
<!--StartFragment -->
过滤重复数据
分享到:
评论

相关推荐

    Oracle row_number()over

    Oracle 中的 row_number()over 函数是一个分析函数,用于生成一个连续的数字序列,可以根据某个列或多个列对数据进行分区和排序,然后生成一个唯一的序号。 row_number()over 函数的基本语法为: ``` row_number()...

    oracle分析函数row_number() over()使用

    Oracle的分析函数row_number() over()是数据库查询中一种强大的工具,它用于对数据集进行分组和排序,尤其在处理重复数据或者实现排名时非常有用。在Oracle SQL中,row_number()函数会为每一行生成一个唯一的数字,...

    oracle row_number用法

    ### Oracle Row_Number 函数详解 #### 一、Row_Number 基础概念 在Oracle数据库中,`ROW_NUMBER()`函数是一种窗口函数,主要用于为查询结果中的每一行分配一个唯一的序列号。这一特性使得它在处理分组数据时非常...

    row_number,根据多个字段过滤,partition by

    本篇文章将围绕如何利用`ROW_NUMBER()`函数结合`PARTITION BY`子句来实现基于多个字段的过滤操作,以解决在给定描述中的问题——即如何根据`name`、`idNumber`以及`date`这三个字段过滤教师表中的重复数据,并仅保留...

    oracle的row_numer()函数的使用

    介绍了 row_number() over(order by column asc) 函数和 row_number() over(partition by column1 order by column2 asc) 的使用实例和方法

    深入探讨:oracle中row_number() over()分析函数用法

    Oracle数据库中的`row_number() over()`分析函数是一个非常实用的工具,用于为数据集中的每一行分配一个唯一的整数,这个数字基于指定的排序条件。在处理大数据集时,它可以帮助我们进行分页、排名或者在复杂的查询...

    Oracle row_number() over()解析函数高效实现分页

    Oracle数据库中的`row_number() over()`函数是一种窗口函数,它在处理数据分页时非常有用。这个函数可以为查询结果集中的每一行分配一个唯一的行号,这些行号基于一个指定的排序规则。在此场景中,我们将探讨如何...

    RANK OVER()和ROW_NUMBER()OVER的使用

    介绍rank() over()分析函数和 row_number() over 的使用实例及其异同点

    ORACLE_OVER函数

    OVER函数通常与窗口函数(如RANK(), DENSE_RANK(), ROW_NUMBER(), SUM(), AVG()等)一起使用。其基本语法形式如下: ```sql &lt;window_function&gt; OVER ( [window_spec] ) ``` 其中`&lt;window_function&gt;`代表具体的窗口...

    Oracle开发之分析函数(Rank, Dense_rank, row_number)

    Oracle分析函数Rank、Dense_rank和row_number是用于处理数据集的高级工具,它们在数据库查询中发挥着关键作用,特别是在需要对数据进行排序和分组时。这三种函数都有各自的特点,适用于不同的业务场景。 1. **row_...

    oracle中rownum和row_number()

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。 与rownum的区别在于:使用rownum进行排序的...

    ORACLE去除重复数据方法

    - `ROW_NUMBER() OVER (PARTITION BY CONTRACTID ORDER BY ALTER_DATE) AS rn`:此行代码使用`ROW_NUMBER()`函数为每个`CONTRACTID`分组内的记录分配一个行号,按照`ALTER_DATE`升序排列。 2. **最终查询**: - ...

    Oracle数据库rownum和row_number的不同点

    与 `ROWNUM` 不同,`ROW_NUMBER()` 可以在 `WHERE` 子句中配合使用,允许我们更灵活地筛选特定行范围,例如选取第n到第m行的数据: ```sql SELECT * FROM ( SELECT ename, sal, ROW_NUMBER() OVER (ORDER BY sal ...

    使用row_number()实现分页实例

    内部查询使用`ROW_NUMBER()`函数,按照`Id`字段对`News`表中的记录进行排序,并为每行生成一个行号`[$Row_Num]`。`OVER`子句定义了排序的顺序,这里是根据`Id`升序排列。 外部查询从临时表 `_temp` 中选择行,只...

    oracle去重复

    通过以上介绍可以看出,利用`ROW_NUMBER()`函数配合`OVER`子句可以方便地实现Oracle数据库中去除重复数据的需求。这种方法不仅简单高效,而且可以根据具体需求灵活调整查询条件。对于处理大规模数据集时,合理的设计...

    ORACLE 常用分析函数

     ROW_NUMBER () OVER([partition_clause] order_by_clause) dense_rank在做排序时如果遇到列有重复值,则重复值所在行的序列值相同,而其后的序列值依旧递增,rank则是重复值所在行的序列值相同,但其后的序列值从...

    oracle分析函数

    ### Oracle分析函数详解:row_number() over 在Oracle数据库中,分析函数(Analytic Functions)是一种强大而灵活的数据处理工具,它们能够在查询结果集中对每一行数据进行计算,而不像传统的聚合函数那样只返回...

Global site tag (gtag.js) - Google Analytics