如何找到平均时间? SQL 服务器 2017

How to find the average time? SQL Server 2017

我有这样的请求:

created_at  - datetime

我需要找到每个状态的平均时间。例如,将所有状态 2 的时间加起来除以它们的数量。结果,得到大约 2 天 5 小时。

如何解决我的请求以使传送带操作成为可能?

使用你有限的示例数据,像这样的东西可以完成工作,虽然它并不漂亮:

declare @deals table(
    deal_id int,
    status_id int,
    created_at datetime
)

insert into @deals values
(1,1,'2021-05-12 18:54:00.000'),
(1,2,'2021-05-13 13:34:00.000'),
(1,3,'2021-05-17 14:39:00.000'),
(1,2,'2021-05-18 09:24:00.000'),
(1,3,'2021-05-18 09:24:00.000'),
(1,4,'2021-05-18 10:27:00.000'),
(1,5,'2021-05-19 13:00:00.000'),
(1,4,'2021-05-19 13:00:00.000'),
(1,5,'2021-05-24 08:06:00.000'),
(2,1,'2021-05-14 17:31:00.000')

select 
    status_id,
    cast(avg(datediff(minute,cast(created_at as date),created_at))/60 as varchar(2)) + ':' + right('0' + cast(avg(datediff(minute,cast(created_at as date),created_at)) - ((avg(datediff(minute,cast(created_at as date),created_at))/60)*60) as varchar(2)),2) as averageTime
from @deals
group by status_id
order by status_id

您得到这些结果: