计算两个日期之间的平均天数

时间:2021-02-24 09:14:24

标签: sql sql-server tsql average

我有下表:

<头>
团队 电话号码 订单号 通话日期 订单日期
TM1 2222222222 26699443 2021-01-28 2021-02-05
TM1 1111111111 26699450 2021-01-22 2021-01-22
TM2 5555555555 26699466 2021-02-22 2021-02-23
TM2 5555555555 26699467 2021-01-22 2021-02-01
TM3 7777777777 26699488 2020-12-10 2021-01-03

我想计算每个团队每个月从接到电话到下单的平均时间。这是我的查询:

SELECT 
    Team,
    MONTH(CallDate),
    AVG(DATEDIFF(day,CallDate,OrderDate))
FROM MyTab AS C 
GROUP BY Team, MONTH(CallDate)

我想计算 CallDate 和 OrderDate 之间的差异,然后 然后应用每个团队每个月的平均值。

1 个答案:

答案 0 :(得分:5)

数据中没有时间部分,那么您打算如何计算时间?您想将天数乘以 24 还是 8(官方时间)?请提一下。如果 orderdate 和 calldate 是同一日期,那么 day 是 0 还是 1?我已经将其视为 1 天。

计算日差:

SELECT 
    Team,
    format(CallDate,'yyyy-MMMM') Month,
    AVG(DATEDIFF(day,CallDate,OrderDate)+1) AverageDayTaken
FROM MyTab AS C 
GROUP BY Team, format(CallDate,'yyyy-MMMM')

输出:

enter image description here

计算工作时差(每天 8 小时):

SELECT 
    Team,
    format(CallDate,'yyyy-MMMM') Month,
    AVG(DATEDIFF(day,CallDate,OrderDate)+1)*8 AverageWorkingHourTaken
FROM MyTab AS C 
GROUP BY Team, format(CallDate,'yyyy-MMMM')