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

SQL技术需求:统计各客户首次购买后10个月内的购买次数

解决客户首次购买后10个月内购买次数的SQL统计方案

没问题,我来帮你搞定这个统计需求!要计算每位客户首次购买后10个月内的购买次数,核心是先锁定每个客户的首次购买日期,再筛选出符合时间范围的交易记录来统计。

思路拆解

  • 获取首次购买日期:通过分组+聚合函数,拿到每个客户最早的购买日期(题目已说明每位客户首次购买日期唯一,所以直接用MIN()就能准确获取)。
  • 筛选时间范围:将原交易表和首次购买日期表关联,筛选出交易日期在「首次购买日期」到「首次购买日期+10个月」之间的记录。
  • 统计购买次数:按客户分组,统计符合条件的交易数量。

通用SQL代码(以SQL Server为例)

WITH FirstPurchase AS (
    -- 第一步:获取每个客户的首次购买日期
    SELECT 
        Client_name,
        MIN(PurchaseDate) AS First_Purchase_Date
    FROM Transactions
    GROUP BY Client_name
)
-- 第二步:关联筛选并统计次数
SELECT 
    t.Client_name,
    COUNT(t.TransactionID) AS Purchase_Count_Within_10Months
FROM Transactions t
JOIN FirstPurchase fp 
    ON t.Client_name = fp.Client_name
WHERE 
    t.PurchaseDate BETWEEN fp.First_Purchase_Date 
    AND DATEADD(MONTH, 10, fp.First_Purchase_Date)
GROUP BY t.Client_name
ORDER BY t.Client_name;

不同数据库的日期函数适配

如果用其他数据库,只需要调整日期计算的函数即可:

  • MySQL:把DATEADD(MONTH, 10, ...)换成DATE_ADD(..., INTERVAL 10 MONTH)
  • PostgreSQL:换成fp.First_Purchase_Date + INTERVAL '10 months'
  • Oracle:换成ADD_MONTHS(fp.First_Purchase_Date, 10)

注意事项

  • 关于「首次购买后」的定义:如果需求是不包含首次购买当天,只需要把BETWEEN改成t.PurchaseDate > fp.First_Purchase_Date AND t.PurchaseDate <= [首次+10个月]即可。
  • 日期格式:确保你的PurchaseDate字段是日期类型,避免字符串格式导致的筛选错误。

样本数据的统计结果

按上述代码计算,样本数据的输出会是:

Client_namePurchase_Count_Within_10Months
John Lee1
Rebort Jo2
Tina Pe1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:29:10