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

求助:统计每月新客户SQL查询返回0结果问题排查

SQL排查与修正:统计当月新客户返回0的问题

原SQL的核心问题

  • 子查询未关联主表:你的NOT EXISTS子查询没有和主查询的邮箱做关联,相当于只要数据库里存在任何一条早于2022-10-01的记录,NOT EXISTS就会判定为false,最终返回0。
  • 表名语法错误:.bc_order前面多了一个点,会导致数据库无法识别该表。
  • 未限定统计月份:主查询没有筛选当前记录的订单是在2022年10月创建的,逻辑上没有锁定要统计的目标月份。

修正后的SQL

SELECT COUNT(DISTINCT b.email)
FROM `bc_order_billing_addresses` b
JOIN `bc_order` o ON o.order_id = b.order_id
WHERE o.order_created_date_time BETWEEN '2022-10-01T00:00:00' AND '2022-10-31T23:59:59'
AND NOT EXISTS (
    SELECT 1
    FROM `bc_order_billing_addresses` b_prev
    JOIN `bc_order` o_prev ON o_prev.order_id = b_prev.order_id
    WHERE b_prev.email = b.email
    AND o_prev.order_created_date_time < '2022-10-01T00:00:00'
);

关键优化点

  • 关联主表与子查询的邮箱:b_prev.email = b.email确保我们检查的是同一个邮箱在当月之前是否有过订单记录。
  • 限定目标月份:通过BETWEEN筛选出2022年10月的订单,精准锁定要统计的新客户范围。
  • 使用COUNT(DISTINCT):避免同一客户当月多次下单被重复计数。
  • 替换LEFT JOIN为JOIN:我们只需要有对应订单的地址记录,LEFT JOIN会包含无效的无订单地址,这部分无需统计。
  • 子查询用SELECT 1:相比SELECT email更高效,数据库只需判断存在性,无需返回具体字段值。

内容的提问来源于stack exchange,提问作者E. Reiner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:50:30