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

如何生成从当前日期倒序的5行序列ID?(日期缺失场景)

解决方案

问题分析

原SQL的核心问题在于:

  • 排序方向错误:ORDER BY date是升序排列,无法实现从当前日期倒序取数的效果
  • 窗口范围逻辑不符:ROWS 5 PRECEDING EXCLUDE CURRENT ROW是基于当前行位置取前面的5行(且排除当前行),而非从当前日期开始倒序筛选存在的最近5条记录

可行SQL方案

使用CTE先对每个员工的记录按日期倒序排序并生成序列ID,再筛选最多5行:

WITH ranked_employees AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY employee_id ORDER BY date DESC) AS sequence_id
    FROM employee
    WHERE date <= CURRENT_DATE  -- 仅保留当前日期及之前的记录
)
SELECT *
FROM ranked_employees
WHERE sequence_id <= 5  -- 限制最多保留5行
ORDER BY employee_id, sequence_id;

逻辑说明

  • 按employee_id分区,确保每个员工的记录单独处理
  • ORDER BY date DESC实现从最新日期到最早日期的倒序排列,自动跳过日期缺失的情况
  • ROW_NUMBER()生成的sequence_id从1开始(对应最近的日期),便于精准筛选前5条记录
  • WHERE date <= CURRENT_DATE确保只处理当前日期及之前的有效数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:01:00