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

SQL查询:指定时间范围内最新记录Delete indicator为1的全列数据

获取指定时间范围内最新删除标记为1的全量记录

可行SQL方案

使用窗口函数ROW_NUMBER()标记每个Code的最新记录,再筛选符合条件的数据,完整语句如下:

WITH ranked_records AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY Code ORDER BY Time DESC) AS rn
    FROM your_table_name
    WHERE Time BETWEEN '2023-07-25 00:00:00' AND '2023-07-30 23:59:59'
)
SELECT Code, Time, `Delete indicator`
FROM ranked_records
WHERE rn = 1 AND `Delete indicator` = 1;

方案说明

  • 窗口函数标记最新记录:通过PARTITION BY Code按代码分组,ORDER BY Time DESC让每组内最新的记录排第一,ROW_NUMBER()给每条记录分配序号rn,最新记录的rn为1。
  • 时间范围前置过滤:先在CTE里过滤出指定时间范围内的记录,避免对全表计算窗口函数,提升查询效率。
  • 最终精准筛选:只保留每组的最新记录(rn=1),且Delete indicator为1的行,同时返回全列原始数据。

结果验证

  • A1:最新记录在时间范围内,Delete indicator=1,会被选中;
  • A2:最新记录Delete indicator=0,被排除;
  • A3:最新记录Delete indicator=0,旧记录不在时间范围,不会被选中;
    完全符合预期输出。

为什么不用GROUP BY

GROUP BY只能返回分组字段或聚合函数计算的结果,无法直接返回全列的原始数据,而窗口函数可以在保留全列的前提下,对分组内的记录进行排序和标记,完美解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:58:11