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

如何用SQL统计前序事件与后续事件的连续发生次数?

解决SQL统计连续事件对次数的问题

你的问题出在两个核心点上:

  • LEAD函数的窗口排序用了ORDER BY sale item,这会把相同商品归在一起,彻底破坏了原始的事件发生顺序(必须按id排序,因为id递增代表事件的先后顺序)
  • 直接分组的逻辑错误,需要先获取正确的连续事件对,再进行统计

正确的SQL写法

WITH event_pairs AS (
    SELECT 
        `Sale Item` AS `First Event`,
        LEAD(`Sale Item`, 1) OVER (ORDER BY id) AS `Second Event`
    FROM your_table_name  -- 替换成你的实际表名
)
SELECT 
    `First Event`,
    `Second Event`,
    COUNT(*) AS `Count`
FROM event_pairs
WHERE `Second Event` IS NOT NULL  -- 排除最后一行(无后续事件的行)
GROUP BY `First Event`, `Second Event`;

代码逻辑说明

  1. 构建事件对:通过CTE子查询event_pairs,用LEAD函数按id顺序获取每个商品对应的下一个商品,得到所有连续的事件组合。
  2. 过滤无效行:最后一行的Second Event会是NULL(没有后续事件),直接过滤掉这部分无效数据。
  3. 分组统计次数:按First Event和Second Event的组合分组,统计每对连续事件出现的次数。

执行后就能得到你期望的结果:

First EventSecond EventCount
AppleBanana2
BananaApple1
AppleOrange1
OrangeApple1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:34:56