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

如何在SQL中基于ID与direction字段实现精准Running Count

正确SQL实现方案

根据你的需求,核心是在同一id下,按direction分组、created_at排序,对OUTBOUND生成递增计数,INBOUND固定标记为1。以下是具体实现:

最终SQL代码

SELECT
    id,
    direction,
    created_at,
    -- 对OUTBOUND按时间生成递增行号,INBOUND固定返回1
    CASE
        WHEN direction = 'OUTBOUND' THEN ROW_NUMBER() OVER (PARTITION BY id, direction ORDER BY created_at)
        ELSE 1
    END AS running_count
FROM your_table; -- 替换为你的数据表名

为什么你之前的尝试有问题

  • 按created_at和id分区:每个分区基本是单条数据,row_number()永远返回1,无法实现OUTBOUND的递增计数。
  • 仅按direction分区:会把所有不同id的同方向数据合并计数,不符合“同一id下”的范围要求。
  • SUM写法报错:通常是因为窗口函数语法错误(比如缺少ORDER BY、窗口范围定义错误),或者未正确匹配分区逻辑。

验证示例

假设你的测试数据如下:

iddirectioncreated_at
1OUTBOUND2024-01-01 10:00:00
1OUTBOUND2024-01-01 10:05:00
1INBOUND2024-01-01 10:10:00
1INBOUND2024-01-01 10:15:00
2OUTBOUND2024-01-01 09:00:00

执行上述SQL后得到的结果:

iddirectioncreated_atrunning_count
1OUTBOUND2024-01-01 10:00:001
1OUTBOUND2024-01-01 10:05:002
1INBOUND2024-01-01 10:10:001
1INBOUND2024-01-01 10:15:001
2OUTBOUND2024-01-01 09:00:001

完全符合你预期的计数规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 23:42:42