You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Redshift SQL中为每个ID匹配唯一的最新非空名称

Redshift SQL提取每个ID最新更新的非空name值

需求:现有数据集,每个id对应多条记录,部分name字段为NULL。需通过Redshift SQL提取每个唯一id,并匹配其最新更新的非空name。

原数据集

idnamelast_updated
001name104/01/2022
001name205/01/2022
001NULL06/01/2022
002name304/01/2022
002name405/01/2022
002NULL06/01/2022

期望结果

idnamelast_updated
001name205/01/2022
002name405/01/2022

解决方案

使用窗口函数ROW_NUMBER()实现,先过滤空name记录,再按id分组并按更新时间倒序排名,取每组排名第一的记录:

WITH ranked_non_null_names AS (
    SELECT 
        id,
        name,
        last_updated,
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY last_updated DESC) AS rank_num
    FROM your_table
    WHERE name IS NOT NULL
)
SELECT id, name, last_updated
FROM ranked_non_null_names
WHERE rank_num = 1;

说明

  • PARTITION BY id:按id将数据分组
  • ORDER BY last_updated DESC:每组内按更新时间倒序排列,最新记录排首位
  • WHERE name IS NOT NULL:提前过滤空name记录,避免干扰排名逻辑
  • 筛选rank_num = 1的结果,即为每个id对应的最新非空name数据

内容的提问来源于stack exchange,提问作者Riccardo Lombardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:20:28