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

PostgreSQL如何查询任意1个月周期内购买次数超10次的客户

需求说明

现有一张存储了1年时间范围内所有customer_id(客户ID)和order_date(下单日期)的数据表,需要统计符合以下条件的客户总数量:在任意连续1个月的周期内累计购买次数超过10次。例如:某用户在10月15日至11月15日期间共下单11次,即符合统计条件。

实现思路
  • 先对每个客户的所有下单记录按日期排序,避免漏算连续周期
  • 利用滑动窗口函数,对每个客户的每一笔下单记录,统计该笔订单日期往后推1个月范围内的所有下单总次数
  • 筛选出任意一个窗口内下单次数≥11的客户,去重后统计总数即可
参考SQL代码(适配支持窗口函数的SQL引擎)
SELECT COUNT(DISTINCT customer_id) AS qualified_customer_count
FROM (
    SELECT 
        customer_id,
        COUNT(*) OVER (
            PARTITION BY customer_id 
            ORDER BY UNIX_TIMESTAMP(order_date) 
            RANGE BETWEEN CURRENT ROW AND 2592000 FOLLOWING -- 2592000为30天对应的秒数,可根据需求调整为自然月逻辑
        ) AS order_count_in_1month
    FROM 你的表名
) t
WHERE t.order_count_in_1month > 10;
  • 如果需要适配自然月(而非固定30天)的统计逻辑,可根据所用SQL引擎调整窗口函数的RANGE范围参数,替换为对应日期间隔函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:03