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

按月份统计新增用户数的SQL代码正确性咨询(附自写代码)

嘿,让我帮你看看这段SQL和你的需求匹配度如何~

你的SQL逻辑分析

首先拆解下你写的SQL逻辑:

  • 子查询SELECT Customer_Id, DATE(MIN(Order_Date)) AS order_date FROM Orders GROUP BY Customer_Id:这部分是对的!它能准确找出每个用户的首次下单日期——也就是这个用户成为新增用户的关键日期。
  • 外层查询SELECT order_date, COUNT (Customer_Id) As new_usercount FROM ... GROUP BY order_date:这里就和你的需求有偏差啦,它是按具体某一天统计新增用户数,但你要的是按月份统计,所以得调整下日期的维度。
修正后的SQL方案

要实现按月份统计,核心是把用户的首次下单日期转换成「年月」格式,再按这个维度分组统计。不同数据库的日期格式化函数不一样,我给你几个常见数据库的版本:

MySQL 版本

SELECT 
    DATE_FORMAT(order_date, '%Y-%m') AS order_month,
    COUNT(Customer_Id) AS new_usercount
FROM (
    SELECT 
        Customer_Id,
        MIN(Order_Date) AS order_date
    FROM Orders
    GROUP BY Customer_Id
) AS ch
GROUP BY order_month
ORDER BY order_month;

PostgreSQL 版本

SELECT 
    TO_CHAR(order_date, 'YYYY-MM') AS order_month,
    COUNT(Customer_Id) AS new_usercount
FROM (
    SELECT 
        Customer_Id,
        MIN(Order_Date) AS order_date
    FROM Orders
    GROUP BY Customer_Id
) AS ch
GROUP BY order_month
ORDER BY order_month;

SQL Server 版本

SELECT 
    FORMAT(order_date, 'yyyy-MM') AS order_month,
    COUNT(Customer_Id) AS new_usercount
FROM (
    SELECT 
        Customer_Id,
        MIN(Order_Date) AS order_date
    FROM Orders
    GROUP BY Customer_Id
) AS ch
GROUP BY FORMAT(order_date, 'yyyy-MM')
ORDER BY order_month;
小补充

我特意加上了ORDER BY order_month,这样统计结果会按月份顺序排列,看起来更清晰直观~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:03:09