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

SQL实现基于创建日期字段的新增客户月度累计数量统计

实现客户月度累计数统计的SQL方案

核心思路

先把每条客户记录的创建日期对齐到当月第一天,统计每月新增的客户数,再对新增数做累加得到累计客户数即可。

通用SQL实现(适配大部分主流数据库)

WITH monthly_new AS (
    -- 统计每个月的新增客户数
    SELECT
        DATE_TRUNC('month', Create_Date::DATE) AS monthly_bucket,
        COUNT(DISTINCT Customer_Number) AS new_customer
    FROM customer_records -- 此处替换为你实际的表名
    GROUP BY DATE_TRUNC('month', Create_Date::DATE)
)
-- 计算累计客户数
SELECT
    SUM(new_customer) OVER (ORDER BY monthly_bucket) AS Customer_Count,
    -- 按要求格式输出月度分组为MM/DD/YYYY的每月第一天
    TO_CHAR(monthly_bucket, 'MM/DD/YYYY') AS Monthly_Bucket
FROM monthly_new
ORDER BY monthly_bucket ASC;

不同数据库的适配调整

  • MySQL环境:DATE_TRUNC('month', Create_Date) 替换为 DATE_FORMAT(Create_Date, '%Y-%m-01'),日期格式化语法对应替换为 DATE_FORMAT(monthly_bucket, '%m/%d/%Y')
  • SQL Server环境:DATE_TRUNC('month', Create_Date) 替换为 DATEFROMPARTS(YEAR(Create_Date), MONTH(Create_Date), 1),日期格式化用 FORMAT(monthly_bucket, 'MM/dd/yyyy')
  • Oracle环境:DATE_TRUNC('month', Create_Date) 替换为 TRUNC(Create_Date, 'MONTH'),日期格式化保持TO_CHAR(monthly_bucket, 'MM/DD/YYYY')即可

可选优化

如果需要补全没有新增客户的月份,避免月度断层,可以先生成一个完整的连续月份临时表,再和上面的月度新增表关联,没有新增的月份补0之后再计算累计值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:24:03