【问题标题】:Find out unique top record based on two columns duplicate value [duplicate]根据两列重复值找出唯一的顶级记录[重复]
【发布时间】:2021-09-22 07:26:33
【问题描述】:

以下是一些数据

现在我想只检索那些具有唯一 current_position_latitude 和 current_position_longitude 和 top 记录的记录,方法是使用 sys_movement_evt_id 的 order by。这低于我需要的输出。

我当前的查询是

select
        CURRENT_POSITION_LATITUDE,
        CURRENT_POSITION_LONGITUDE,
        SYS_EVT_TARGET_ID,
        SYS_MOVEMENT_EVT_ID
from TMS_MOVEMENT_EVT
where SYS_EVT_TARGET_ID = 10245 and
      CURRENT_POSITION_LATITUDE is not null and CURRENT_POSITION_LATITUDE != 0 and 
      CURRENT_POSITION_LONGITUDE is not null and CURRENT_POSITION_LONGITUDE != 0 

请告诉我如何实现所需的输出。

【问题讨论】:

    标签: sql oracle oracle11g greatest-n-per-group


    【解决方案1】:

    您可以使用 RANK() 函数实现此目的

    with CTE_DATA AS (
                      SELECT
                             CURRENT_POSITION_LATITUDE,
                             CURRENT_POSITION_LONGITUDE,
                             SYS_EVT_TARGET_ID,
                             SYS_MOVEMENT_EVT_ID
                             RANK() OVER(PARTION BY CURRENT_POSITION_LATITUDE, 
                                                     CURRENT_POSITION_LONGITUDE
                                          ORDER BY SYS_MOVEMENT_EVT_ID DESC) LAT_RANK
                      FROM TMS_MOVEMENT_EVT
                     )
    SELECT
          CURRENT_POSITION_LATITUDE,
          CURRENT_POSITION_LONGITUDE,
          SYS_EVT_TARGET_ID,
          SYS_MOVEMENT_EVT_ID
    FROM CTE_DATA
    WHERE LAT_RANK = 1
    

    Some info on using RANK()

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 2021-11-11
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      相关资源
      最近更新 更多