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

无循环SQL获取连续行值:Vertica实现入站消息首次响应时间计算

Vertica 计算入站消息首次响应时间方案

核心思路

无需递归或循环,直接通过带范围限定的分析函数实现匹配:

  • 出站(out)类型消息的ReplyDate直接返回null
  • 入站(in)类型消息取同AppId下,发送时间晚于当前消息的所有出站消息的最小发送时间,即为最近的首次响应时间,无匹配则返回null

可行SQL代码

SELECT 
    AppId,
    Id,
    Direction,
    Text,
    Date,
    CASE 
        WHEN Direction = 'out' THEN NULL
        ELSE MIN(CASE WHEN Direction = 'out' THEN Date END) 
             OVER (
                 PARTITION BY AppId 
                 ORDER BY Date 
                 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
             )
    END AS ReplyDate
FROM your_table_name -- 替换为实际表名
ORDER BY AppId, Date ASC;

逻辑说明

  • PARTITION BY AppId限定仅在同一会话范围内匹配响应消息,不会跨会话取值
  • ORDER BY Date按消息发送时间正序排列同会话内的消息
  • ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING限定窗口范围为当前行之后的所有同会话记录,覆盖当前入站消息之后的所有历史消息
  • 内层CASE仅提取出站消息的发送时间,外层MIN取最小时间即为最近的响应时间,无匹配时MIN自动返回null,完全符合需求规则

注意:如果Date字段存储为字符串格式,需要先转为时间戳类型再参与计算,避免字符串排序出现逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:18:02