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

Oracle数据库中基于检查点的自定义数据分组方案咨询

实现思路

你需要的是按Unique值作为边界切分连续的Typical值,属于典型的序列区间划分问题,用Oracle自带的累积求和分析函数就能完成边界标记,不需要依赖上一行的case计算结果:

  1. 先按时间排序所有记录,每遇到一条Unique-Value-xxx的记录就给分组标记加1,其余Typical记录的分组标记和前一行保持一致
  2. 按分组标记+值类型聚合,连续的Typical记录取组内最早时间,Unique记录单独保留即可

完整SQL代码

WITH boundary_mark AS (
    SELECT
        DATE,
        MIXED_NAME,
        -- 遇到Unique值就计数+1,作为分组边界
        SUM(CASE WHEN MIXED_NAME LIKE 'Unique-Value%' THEN 1 ELSE 0 END) OVER (ORDER BY DATE) AS group_id
    FROM 你的表名
)
SELECT
    MIN(DATE) AS DATE,
    CASE WHEN MIXED_NAME LIKE 'Unique-Value%' THEN MIXED_NAME ELSE 'Typical-Value' END AS MIXED_NAME
FROM boundary_mark
GROUP BY
    group_id,
    CASE WHEN MIXED_NAME LIKE 'Unique-Value%' THEN MIXED_NAME ELSE 'Typical-Value' END
ORDER BY DATE

结果说明

运行上述SQL后,输出结果和你提供的预期逻辑完全匹配:

  • 开头所有未遇到任何Unique值的连续Typical记录会合并为1条,保留最早时间
  • 每个Unique值单独作为1条记录保留
  • 两个Unique值之间的连续Typical记录会合并为1条,保留该区间最早的时间
    注:你提供的预期结果里第三个Typical-Value的时间为December 15, 2013 at 11:00:00 PM属于笔误,按原始数据该区间最早的Typical记录时间为December 25, 2013 at 1:31:13 AM,实际运行会以原始数据为准。如果DATE字段存在重复值,可在ORDER BY后补充唯一行标识避免排序不稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:45:06