首页 > 解决方案 > 获取每天的平均值 - SQL

问题描述

我有一个时间戳字段,我想找到每天花费的平均时间。

让我们说:

created: 2020-01-01 23:15:44
Resolved: 2020-01-04 12:00:00

我需要我的输出是:

Date         Mins
2020-01-01   45
2020-01-02   1440
2020-01-03   1440
2020-01-04   720

我已经建立了一个日历表,但我不知道如何使用它。

标签: sqlsql-server

解决方案


您可以加入日历表并计算日期范围开始和结束的不同时间。

select c.[date] as [Date], 
       case when c.[date] = convert(date, t.created) 
            then datediff(minute, t.created, dateadd(day, 1, c.[date]))
            when c.[date] = convert(date, t.resolved) 
            then datediff(minute, c.[date], t.resolved)
            else 1440
            end AS [Mins]
from   yourtable t
       inner join calendar c on  c.[date] >= convert(date, t.created)
                             and c.[date] <= convert(date, t.resolved) 

db<>小提琴

如果您需要平均值,只需使用GROUP BYAVG()相应地


推荐阅读