MySQL按小时统计满足处理时长条件的记录数及平均时长
按upload_date小时段分组统计处理时长超1小时的记录数及平均时长
问题背景
现有一张包含updated_date和upload_date列的表auk_feed_queue,示例数据如下:
| updated_date | upload_date |
|---|---|
| 2023-04-03 09:10:50 | 2023-04-03 09:08:24 |
| 2023-04-03 09:14:55 | 2023-04-03 09:08:34 |
| 2023-04-03 09:23:51 | 2023-04-03 09:08:36 |
| 2023-04-03 09:25:53 | 2023-04-03 09:14:35 |
| 2023-04-03 09:28:43 | 2023-04-03 09:17:29 |
| 2023-04-03 10:29:06 | 2023-04-03 09:39:16 |
| 2023-04-03 10:53:15 | 2023-04-03 09:44:16 |
| 2023-04-03 10:24:40 | 2023-04-03 09:48:39 |
需求:
- 按
upload_date的1小时时间段(如2023-04-03 09:00:00至10:00:00)分组 - 统计每个时间段内处理时长(
updated_date与upload_date的时间差)超过1小时的记录数 - 返回该组的平均处理时长,格式为
hh:mm:ss - 每个时间段对应一行结果
尝试的查询及问题
尝试了以下SQL:
SELECT COUNT(*) AS number_of_feeds, AVG(TIMEDIFF(updated_date, upload_date)) AS average_processing_time FROM auk_feed_queue WHERE TIMEDIFF(updated_date, upload_date) > '00:59:59'
但存在两个问题:
- 所有符合条件的记录被合并成一行返回,未按小时段分组
- 平均处理时长格式不正确,返回数值(如
90274.3861)而非hh:mm:ss格式
解决方案
核心思路
- 对
upload_date进行小时级截断,生成每个分组的时间段标识 - 条件统计每个分组内处理时长超1小时的记录数
- 将时间差转换为秒数计算平均值,再转回
hh:mm:ss格式
完整SQL(MySQL)
SELECT DATE_FORMAT(upload_date, '%Y-%m-%d %H:00:00') AS hour_interval, COUNT(CASE WHEN TIMEDIFF(updated_date, upload_date) > '00:59:59' THEN 1 END) AS number_of_feeds, SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(updated_date, upload_date)))) AS average_processing_time FROM auk_feed_queue GROUP BY hour_interval ORDER BY hour_interval;
关键说明
DATE_FORMAT(upload_date, '%Y-%m-%d %H:00:00'):将upload_date统一到当前小时的0分0秒,作为分组的时间段标识COUNT(CASE ...):仅统计处理时长超过1小时的记录,不符合条件的会被视为NULL,COUNT不会统计NULL值TIME_TO_SEC(TIMEDIFF(...)):将时间差转换为秒数,方便计算平均值;SEC_TO_TIME()再将平均秒数转换回hh:mm:ss格式GROUP BY hour_interval:按小时段分组,确保每个时间段对应一行结果
其他数据库适配(PostgreSQL)
SELECT DATE_TRUNC('hour', upload_date) AS hour_interval, COUNT(CASE WHEN (updated_date - upload_date) > INTERVAL '1 hour' THEN 1 END) AS number_of_feeds, TO_CHAR(AVG(updated_date - upload_date), 'HH24:MI:SS') AS average_processing_time FROM auk_feed_queue GROUP BY hour_interval ORDER BY hour_interval;
内容的提问来源于stack exchange,提问作者Márton Molnár
相关产品推荐
相关产品推荐

