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

如何合并SQL查询并简化指定周期任务平均完成时长计算

合并查询并简化任务平均完成时长计算

问题背景

需要计算指定周期(示例:2022-07-01 至 2022-07-23)内任务的平均完成时长,数据表包含Received_date和Completed_date两个时间戳列,数据样例如下:

Received_dateCompleted_date
2022-07-01 14:06:16.0002022-07-01 14:06:00.000
2022-07-01 14:03:48.0002022-07-01 14:04:00.000
......
2022-07-23 09:05:25.0002022-07-23 10:53:00.000

现有两个可正常运行的查询,分别计算秒级平均时长和格式化后的时长,需合并为一个查询并简化实现。


合并后的单查询实现

通过子查询直接计算平均秒数,再在同一查询中完成时长格式化,无需单独定义变量:

SELECT 
    CAST(DATEPART(MONTH, DATEADD(SECOND, avg_seconds, 0)) - 1 AS VARCHAR(2)) + ' month(s) ' +
    CAST(DATEPART(DAY, DATEADD(SECOND, avg_seconds, 0)) - 1 AS VARCHAR(2)) + ' day(s) ' +
    CAST(DATEPART(HOUR, DATEADD(SECOND, avg_seconds, 0)) AS VARCHAR(2)) + ' hour(s) ' +
    CAST(DATEPART(MINUTE, DATEADD(SECOND, avg_seconds, 0)) AS VARCHAR(2)) + ' minute(s) ' +
    CAST(DATEPART(SECOND, DATEADD(SECOND, avg_seconds, 0)) AS VARCHAR(2)) + ' second(s)' 
    AS '指定周期内任务完成平均时长',
    avg_seconds AS '请求完成平均时长(秒)'
FROM (
    SELECT AVG(ABS(DATEDIFF(SECOND, Completed_date, Received_date))) AS avg_seconds
    FROM Mytable
    WHERE Completed_date >= '2022-07-01 00:00' AND Completed_date <= '2022-07-23 23:59'
) AS avg_calc

输出示例

指定周期内任务完成平均时长请求完成平均时长(秒)
0 month(s) 1 day(s) 17 hour(s) 30 minute(s) 8 second(s)149408

更简便的格式化方式(SQL Server)

利用FORMAT函数替代手动字符串拼接,代码更简洁易维护:

SELECT 
    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
        FORMAT(DATEADD(SECOND, avg_seconds, 0), 'M month(s) d day(s) H hour(s) m minute(s) s second(s)'),
        ' 1 month(s)', ' 1 month(s)'),
        ' 1 day(s)', ' 1 day(s)'),
        ' 1 hour(s)', ' 1 hour(s)'),
        ' 1 minute(s)', ' 1 minute(s)'),
        ' 1 second(s)', ' 1 second(s)') AS '指定周期内任务完成平均时长',
    avg_seconds AS '请求完成平均时长(秒)'
FROM (
    SELECT AVG(ABS(DATEDIFF(SECOND, Completed_date, Received_date))) AS avg_seconds
    FROM Mytable
    WHERE Completed_date >= '2022-07-01 00:00' AND Completed_date <= '2022-07-23 23:59'
) AS avg_calc

说明

  • 子查询负责计算指定周期内的平均完成秒数,外层查询直接将秒数转换为格式化的时长字符串,一次查询满足两个需求。
  • FORMAT函数可快速生成标准化时长格式,若需调整输出样式(如去掉前导零),仅需修改格式字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:42:21