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

求助:编写SQL查询按季度计算工单平均解决时间

解决季度平均解决时间的SQL查询方案

别发愁,这事儿不难!我帮你梳理一下实现思路,再给你适配不同数据库的具体代码,完全贴合你要的输出格式。

核心思路

我们需要做三件事:

  • 从closed date字段里提取对应的季度(Q1-Q4)
  • 按季度对工单分组,计算每组resolve time的平均值
  • 把结果格式化成你要的Quarter | days样式

分数据库实现代码

不同数据库提取季度的函数略有不同,我给你列几种常用的:

1. MySQL/MariaDB

SELECT
  CONCAT('Q', QUARTER(closed_date)) AS Quarter,
  ROUND(AVG(resolve_time), 0) AS days
FROM
  your_ticket_table -- 替换成你的实际表名
GROUP BY
  QUARTER(closed_date)
ORDER BY
  QUARTER(closed_date);
  • QUARTER(closed_date):直接提取日期对应的季度(1-4)
  • CONCAT('Q', ...):把数字季度转成Q1这种格式
  • ROUND(AVG(...), 0):计算平均值并取整,和你示例里的整数结果一致
  • GROUP BY按季度分组,ORDER BY保证Q1到Q4的顺序

2. PostgreSQL

SELECT
  CONCAT('Q', EXTRACT(QUARTER FROM closed_date)) AS Quarter,
  ROUND(AVG(resolve_time)) AS days
FROM
  your_ticket_table -- 替换成你的实际表名
GROUP BY
  EXTRACT(QUARTER FROM closed_date)
ORDER BY
  EXTRACT(QUARTER FROM closed_date);

PostgreSQL用EXTRACT(QUARTER FROM 日期)来获取季度数值,其他逻辑和MySQL一致。

3. SQL Server

SELECT
  'Q' + CAST(DATEPART(QUARTER, closed_date) AS VARCHAR) AS Quarter,
  ROUND(AVG(resolve_time), 0) AS days
FROM
  your_ticket_table -- 替换成你的实际表名
GROUP BY
  DATEPART(QUARTER, closed_date)
ORDER BY
  DATEPART(QUARTER, closed_date);

SQL Server用DATEPART(QUARTER, 日期)提取季度,再用CAST转成字符串拼接成Q1格式。

验证你的示例场景

假设第一季度有5条工单,resolve_time分别是10、1、3、1、10,代入上面的查询后:

  • 平均值计算:(10+1+3+1+10)/5 = 5
  • 输出会是Q1 | 5,完全符合你的示例要求。

扩展提示(可选)

如果你的数据跨年度,需要区分不同年份的季度(比如2023Q1、2024Q1),只需要在查询里加上年份即可,比如MySQL版本可以改成:

SELECT
  CONCAT(YEAR(closed_date), 'Q', QUARTER(closed_date)) AS Quarter,
  ROUND(AVG(resolve_time), 0) AS days
FROM
  your_ticket_table
GROUP BY
  YEAR(closed_date), QUARTER(closed_date)
ORDER BY
  YEAR(closed_date), QUARTER(closed_date);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:04:07