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

SQL查询:找出近60天未产生购买行为的客户

筛选近60天未购买商品的客户SQL实现

没问题,我来帮你梳理下怎么写这个SQL语句。首先咱们得明确需求:找出所有近60天内没有任何购买记录的客户,核心思路是先确定每个客户的最后一次购买时间,再判断这个时间是否超出了60天的范围。

假设你的表名为customer_purchases,字段就是你给出的Customer_key、order_date、item,那基础版的SQL可以这么写:

SELECT Customer_key
FROM (
    -- 先分组获取每个客户的最后购买日期
    SELECT Customer_key, MAX(order_date) AS last_purchase
    FROM customer_purchases
    GROUP BY Customer_key
) AS customer_last_purchase
-- 筛选出最后购买日期在60天前的客户
WHERE last_purchase < CURRENT_DATE - INTERVAL '60 days';

补充说明:

  • 不同数据库对日期运算的语法略有不同,比如:
    • MySQL/MariaDB 可以把条件改成 last_purchase < DATE_SUB(CURDATE(), INTERVAL 60 DAY)
    • Oracle 可以改成 last_purchase < SYSDATE - 60
    • SQL Server 则用 last_purchase < DATEADD(day, -60, GETDATE())

如果你的业务场景里有单独的customers客户表(记录所有存在的客户,包括从未购买过的),那更严谨的写法是左连接购买表,这样能覆盖那些从来没买过东西的客户:

SELECT c.Customer_key
FROM customers c
LEFT JOIN customer_purchases p ON c.Customer_key = p.Customer_key
GROUP BY c.Customer_key
HAVING MAX(p.order_date) < CURRENT_DATE - INTERVAL '60 days' 
   OR MAX(p.order_date) IS NULL; -- 从未有过购买记录的客户

这个写法会把两类客户都筛选出来:一类是曾经买过但最近60天没买的,另一类是从来没买过任何商品的客户,更贴合实际业务需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:54:04