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

如何基于Place和Grade非空条件过滤同名重复记录

二次过滤重复姓名记录的实现方案

示例原始数据

行号姓名地点成绩
Row 1Smith(null)(null)
Row 2KatPoland2
Row 3Kat(null)(null)

过滤规则

  • 对同名的重复记录,优先保留地点(Place)和成绩(Grade)均非空的行
  • 若某姓名的所有记录都不满足上述条件,则保留该姓名的任意一条记录
  • 最终得到每个姓名仅一条记录的结果集

实现SQL(基于窗口函数)

假设原始查询结果存储在临时表/子查询temp_result中,可通过以下二次过滤语句得到目标结果:

SELECT Name, Place, Grade
FROM (
    SELECT 
        Name, Place, Grade,
        -- 按姓名分组,优先排序出Place和Grade均非空的记录
        ROW_NUMBER() OVER (
            PARTITION BY Name 
            ORDER BY CASE WHEN Place IS NOT NULL AND Grade IS NOT NULL THEN 0 ELSE 1 END
        ) AS row_rank
    FROM temp_result
) filtered
WHERE row_rank = 1;

逻辑说明

  1. 使用PARTITION BY Name将数据按姓名分组
  2. 通过CASE表达式给符合条件的记录赋予更高排序优先级(0比1靠前)
  3. 取每组的第一条记录(row_rank = 1),即为每个姓名的目标记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:07:12