【问题标题】:How to select top record of duplicates and create new table?如何选择重复的最高记录并创建新表?
【发布时间】:2018-11-03 00:32:58
【问题描述】:

我有下表:

=====================
RecNum ID     Date
=====================
12345  188832 2045-01-07
33445  188832 2035-10-01
66789  188849 2047-10-18
77889  340520 2047-04-28
99776  340520 2047-04-28
=====================

我需要生成一个只有一个ID对应最新日期的新表。

如您所见,ID 188832 有两个日期:2045-01-07 和 2035-10-01。 我只需要最新的:2045-01-07。

188849 只有一个日期,应该保持原样。 340520 有两条相同日期的记录 - 我只需要选择一条。

RecNum 是唯一的。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    ROW_NUMBER 应该在这里工作:

    SELECT RecNum, ID, Date
    FROM
    (
        SELECT t.*, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) rn
        FROM yourTable t
    ) t
    WHERE rn = 1;
    

    请注意,在ID = 340520 的情况下,上述查询将任意选择两条记录之一。如果您有一些逻辑来确定如何处理此类关系,则可以修改查询。

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 2014-02-01
      • 2020-02-03
      相关资源
      最近更新 更多