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

如何在SQL中带条件使用COUNT:统计购镜后12个月内购沙发的客户

解决方案

正确SQL查询语句

SELECT
    o1.customer_id,
    COUNT(o2.order_date) AS cross_sale
FROM
    Orders o1
LEFT JOIN Orders o2 ON
    o1.customer_id = o2.customer_id
    AND o2.product = 'sofa'
    AND o2.order_date > o1.order_date
    AND o2.order_date <= ADD_MONTHS(o1.order_date, 12)
WHERE
    o1.product = 'mirror'
GROUP BY
    o1.customer_id

关键逻辑说明

  • 仅聚焦购买过镜子的客户:通过WHERE o1.product = 'mirror'筛选出所有镜子订单记录
  • 精准匹配符合时间范围的沙发订单:JOIN条件中明确限定:
    1. 必须是同一客户的沙发订单
    2. 沙发订单发生在镜子订单之后
    3. 沙发订单不晚于镜子订单日期加12个月(用ADD_MONTHS函数实现跨12个月的时间范围判断,适配Oracle日期处理逻辑)
  • 统计并去重:按客户ID分组,用COUNT(o2.order_date)统计有效沙发订单数,LEFT JOIN确保无符合条件订单的客户也会显示0

示例数据执行结果

customer_idcross_sale
2343241
7349380

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:57:50