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

SQL如何按日期分组统计指定范围内每日新增客户行数?

解决按日期分组统计每日新增客户数的问题

你的问题核心是按完整的datetime字段分组时,时分秒的差异导致每个时间点都生成独立分组,只需提取datetime的日期部分再分组即可。以下是主流数据库的实现方案:

通用思路

将包含时分秒的datetime字段转换为仅保留年月日的日期格式,以此作为分组依据,同时用动态条件筛选最近一周的数据(替代写死的日期,更灵活)。

1. MySQL/MariaDB

使用DATE()函数提取日期部分:

SELECT DATE(datetime) AS record_date, COUNT(*) AS num_per_day
FROM customers
WHERE datetime >= CURRENT_DATE - INTERVAL 7 DAY
GROUP BY record_date
ORDER BY record_date;

2. PostgreSQL

可以用DATE_TRUNC截断到天,或者直接转换为日期类型:

-- 方法1:DATE_TRUNC 截断日期
SELECT DATE_TRUNC('day', datetime)::DATE AS record_date, COUNT(*) AS num_per_day
FROM customers
WHERE datetime >= CURRENT_DATE - INTERVAL '7 days'
GROUP BY record_date
ORDER BY record_date;

-- 方法2:直接转换为日期类型
SELECT datetime::DATE AS record_date, COUNT(*) AS num_per_day
FROM customers
WHERE datetime >= CURRENT_DATE - INTERVAL '7 days'
GROUP BY record_date
ORDER BY record_date;

3. SQL Server

使用CAST或CONVERT将datetime转为DATE类型:

SELECT CAST(datetime AS DATE) AS record_date, COUNT(*) AS num_per_day
FROM customers
WHERE datetime >= DATEADD(DAY, -7, GETDATE())
GROUP BY CAST(datetime AS DATE)
ORDER BY record_date;

额外说明

  • 用CURRENT_DATE - 7天这类动态条件,无需每次手动修改日期,自动统计最近7天的数据
  • 加上ORDER BY record_date可以让结果按日期升序排列,查看更直观
  • 如果需要包含当天的新增记录,WHERE条件用>=而非>,避免漏掉当天的实时数据

内容的提问来源于stack exchange,提问作者Code By Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:54:55