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

修复SQL代码:标记用户连续多天从同一企业的下单记录

需求说明

从包含用户(USERT)、下单企业(COMPANY)及下单日期(CREATIONDATE)的数据集中,识别并标记同一用户在同一企业连续多天下单的记录:

  • 仅标记同用户同企业的跨天连续下单记录
  • 同一用户在不同企业的跨天下单无需标记
  • 排除同一天内的集中下单(同一天多次下单不算连续多天下单)
    最终要在原表基础上增加flag字段,用Y/N标识符合条件的记录。
原代码的问题

原SQL存在几个核心错误:

  • 窗口函数排序逻辑错误:PARTITION BY USERT ORDER BY USERT没有按日期排序,无法正确计算前后日期差
  • 冗余判断:按USERT分区后,前后记录必然是同一用户,无需额外判断USERT = prev_USERT
  • 忽略核心条件:未关联COMPANY字段,会误标记不同企业的跨天下单
  • 日期判断不严谨:未处理同一天重复下单的情况,会误将同一天多次下单判定为连续
修复后的SQL代码
WITH user_company_dates AS (
    -- 去重:同一用户、企业、日期的记录只留一条,避免同一天重复下单干扰判断
    SELECT DISTINCT USERT, CREATIONDATE, COMPANY
    FROM VEKPOLFA1P72_TESZT_P
    WHERE CREATIONDATE BETWEEN '20230601' AND '20230630'
),
consecutive_check AS (
    SELECT 
        USERT, 
        CREATIONDATE, 
        COMPANY,
        -- 计算当前记录与上一条同用户同企业记录的日期差
        DATEDIFF(DAY, LAG(CREATIONDATE) OVER(PARTITION BY USERT, COMPANY ORDER BY CREATIONDATE), CREATIONDATE) AS prev_day_diff,
        -- 计算当前记录与下一条同用户同企业记录的日期差
        DATEDIFF(DAY, CREATIONDATE, LEAD(CREATIONDATE) OVER(PARTITION BY USERT, COMPANY ORDER BY CREATIONDATE)) AS next_day_diff
    FROM user_company_dates
)
SELECT 
    orig.USERT, 
    orig.CREATIONDATE, 
    orig.COMPANY,
    CASE
        -- 只要当前记录属于连续多天下单序列(和上/下一条同企业日期差为1),就标记为Y
        WHEN (t.prev_day_diff = 1) OR (t.next_day_diff = 1) THEN 'Y'
        ELSE 'N'
    END AS flag
FROM VEKPOLFA1P72_TESZT_P orig
LEFT JOIN consecutive_check t
    ON orig.USERT = t.USERT 
    AND orig.CREATIONDATE = t.CREATIONDATE 
    AND orig.COMPANY = t.COMPANY
WHERE orig.CREATIONDATE BETWEEN '20230601' AND '20230630'
ORDER BY orig.USERT, orig.CREATIONDATE;
代码逻辑说明
  1. 去重处理:先对USERT+COMPANY+CREATIONDATE去重,排除同一天重复下单对连续天数判断的干扰
  2. 窗口函数计算日期差:按USERT+COMPANY分区、日期排序,计算每条记录与前后同用户同企业记录的日期差
  3. 标记连续记录:如果当前记录和上一条/下一条同企业记录的日期差为1,标记为Y,否则为N
  4. 关联原表:通过左连接保留原表所有原始记录,包括同一天的重复下单,确保这些记录能继承对应的标记
数据集示例(部分)
USERT;CREATIONDATE;COMPANY
45921390;20230629;NANREC
45921390;20230628;NANREC
45921390;20230630;NANREC
49148167;20230604;INGMBH
49148167;20230605;INGMBH
49148167;20230606;INGMBH
49148179;20230621;GK LGA
49148179;20230622;GK LGA
49148179;20230623;GK LGA
49148179;20230624;GK LGA
预期输出(带标记)
USERT;CREATIONDATE;COMPANY;flag
45921390;20230628;NANREC;Y
45921390;20230629;NANREC;Y
45921390;20230630;NANREC;Y
49148167;20230604;INGMBH;Y
49148167;20230605;INGMBH;Y
49148167;20230606;INGMBH;Y
49148179;20230621;GK LGA;Y
49148179;20230622;GK LGA;Y
49148179;20230623;GK LGA;Y
49148179;20230624;GK LGA;Y

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:27:13