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

如何编写SQL按秒/分/小时等时间单位聚合统计到店客户数

按时间粒度聚合统计到店客户数的SQL实现

完全可以通过时间截断+分组计数的逻辑实现不同时间单位的客户到店数统计,核心思路是将每条记录的arrival_time字段对齐到目标统计粒度,再按对齐后的时间值分组计数即可。

注意:如果你的arrival_time字段是字符串格式存储(即你示例中给出的12/1/2020 12:01:39 AM这类文本值),需要先通过数据库的时间转换函数将其转为标准时间类型再做处理。以下以最常用的MySQL语法为例给出不同粒度的实现代码,其他数据库可对应替换为自身支持的时间截断/格式化函数。

各时间粒度统计示例

  • 按秒粒度统计
    统计每一秒内的到店客户总数:

SELECT
DATE_FORMAT(arrival_time, '%Y-%m-%d %H:%i:%s') AS stat_time,
COUNT(*) AS customer_total
FROM customers
GROUP BY stat_time
ORDER BY stat_time;

- 按分钟粒度统计
将秒级时间对齐到整分钟,统计每分钟到店客户总数:
```sql
SELECT
DATE_FORMAT(arrival_time, '%Y-%m-%d %H:%i:00') AS stat_time,
COUNT(*) AS customer_total
FROM customers
GROUP BY stat_time
ORDER BY stat_time;
  • 按小时粒度统计
    将分秒级时间对齐到整小时,统计每小时到店客户总数:

SELECT
DATE_FORMAT(arrival_time, '%Y-%m-%d %H:00:00') AS stat_time,
COUNT(*) AS customer_total
FROM customers
GROUP BY stat_time
ORDER BY stat_time;

- 按天粒度统计
截断时分秒部分,统计每日到店客户总数:
```sql
SELECT
DATE(arrival_time) AS stat_date,
COUNT(*) AS customer_total
FROM customers
GROUP BY stat_date
ORDER BY stat_date;

其他数据库适配提示:

  • PostgreSQL:直接使用内置的date_trunc函数即可,按分钟统计的写法为date_trunc('minute', arrival_time) AS stat_time,粒度参数可替换为second/hour/day等
  • SQL Server:通过日期偏移计算实现截断,按分钟统计的写法为DATEADD(minute, DATEDIFF(minute, 0, arrival_time), 0) AS stat_time
  • Oracle:使用TRUNC函数做时间截断,按小时统计的写法为TRUNC(arrival_time, 'HH24') AS stat_time

如果你的arrival_time是字符串格式存储,在MySQL中可以用STR_TO_DATE(arrival_time, '%c/%e/%Y %h:%i:%s %p')替换上述SQL中所有的arrival_time字段,先做格式转换再统计即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:03:18