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

如何调整SQL的row_number()函数以去除重复记录并保留目标顶行?

问题与解决方案

现有数据记录

keystart_dtend_dtidstatus
122020-8-122300-01-011active
121998-9-232014-9-232active

当前使用的函数

row_number() over (partition by id order by status, end_dt desc) rnk

目标结果

keystart_dtend_dtidstatus
122020-8-122300-01-011active

调整方案

将函数的分区字段从id改为key,调整后的函数为:

row_number() over (partition by key order by status, end_dt desc) rnk

之后在外层查询中添加过滤条件where rnk = 1,即可得到目标记录。

原因说明

原函数按id分区,两条数据会被分到不同分区,各自生成rnk=1,无法筛选出唯一结果。改为按key分区后,两条数据进入同一分区,按end_dt降序排序后,end_dt最大的记录会被标记为rnk=1,过滤后就能得到你需要的目标记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:53:13