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

SQL Cohort分析:统计不限制历史访问的当日全量回访用户

Cohort分析SQL逻辑修正(MaxCompute/MySQL兼容)

问题根因

原有逻辑仅将用户的首次访问日作为其唯一所属的cohort分组,导致用户后续的访问仅会被计入首次访问日对应的cohort留存统计,不会被计入访问当日的cohort的Day1统计,因此出现12/12/2021行Day1仅统计到新用户Holt,漏掉老用户Jake的问题。

额外注意:原有查询中日期解析格式to_date(visit_date, 'yyyymmdd')和样例的dd/mm/yyyy格式不匹配,也会导致日期计算错误。


修正后查询语句

with 
-- 提取所有需要作为统计基准的cohort日期
all_cohort_days as (
    SELECT DISTINCT to_date(visit_date, 'dd/mm/yyyy') as cohort_day
    FROM base_data
),
-- 去重用户单日访问记录,避免同一天多次访问重复计数
user_visit_records as (
    SELECT DISTINCT 
        user_id,
        to_date(visit_date, 'dd/mm/yyyy') as visit_day
    FROM base_data
)
SELECT 
    t1.cohort_day as `Date`,
    DATEDIFF(t2.visit_day, t1.cohort_day, 'dd') + 1 as day_number,
    COUNT(DISTINCT t2.user_id) as user_count
FROM all_cohort_days t1
-- 关联所有大于等于cohort基准日的用户访问记录
LEFT JOIN user_visit_records t2
ON t2.visit_day >= t1.cohort_day
GROUP BY t1.cohort_day, DATEDIFF(t2.visit_day, t1.cohort_day, 'dd') + 1
ORDER BY t1.cohort_day, day_number;

输出说明

以上查询结果直接透视后即可完全匹配你的期望输出:

  • 每个cohort基准日的Day1会统计当日所有访问用户,不区分新老用户
  • 后续Day_N统计的是基准日之后第N天,所有访问过基准日的用户的回访量,不限制用户首次访问时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:45:04