sql和excel之间的平均时差?

时间:2013-01-10 16:48:01

标签: sql average

我有这些时间值(varchar):[hh:mm]

2:41
2:31
1:46
21:41
18:19
17:56
18:4
17:17
17:2
16:39
0:40
0:38
0:38
0:29
1:19
2:52
0:15
16:55
17:25
17:15
3:31
2:7
2:21
1:35
1:38
0:17
0:28
18:40
2:54
18:14
2:31
18:9
18:10
0:39
0:38
3:5
3:20
3:6
2:58
2:31
2:4
1:54
2:2
1:44
1:39
1:22
1:6
1:15
0:53
1:13
20:32
1:11
0:36
0:35
0:26
1:3
4:20
3:42
3:7
3:16
2:44
2:30
0:40
2:5
4:21
2:6
3:54
3:45
3:31
18:59
18:59
18:47
18:43
19:40
19:29
2:19
1:9
4:10
3:50
2:20
1:16
4:33
21:23
20:57
16:31
1:51
5:15
1:48
3:15
1:32
4:19
4:17
1:59
3:38
1:55
2:11
1:26

现在,当我在excel中取平均值时,结果为:6:14

如果我在sql中执行此操作:(使用:This

select 
    Month(OperationDate) [Month], count(distinct IdOrder) OrderQty,
    avg(DATEPART(hh,TimeSpent)*60 + DATEPART(mi,TimeSpent)) % 24 as AvgHour,
    avg(DATEPART(hh,TimeSpent)*60 + DATEPART(mi,TimeSpent)) / 24 as AvgMinute

from @tmp1 tmp1
inner join tblCheckList tcl on tmp1.IdCheckList = tcl.IdCheckList
where TimeSpent<>'0:0'
group by Month(OperationDate)

它返回平均值:10:15

为什么会有差异?

3 个答案:

答案 0 :(得分:1)

为什么% 24/ 24

难道你不会将平均分钟数除以60以获得平均时数吗?

avg(DATEPART(hh,TimeSpent)*60 + DATEPART(mi,TimeSpent)) / 60.0 as AvgHour,
avg(DATEPART(hh,TimeSpent)*60 + DATEPART(mi,TimeSpent)) as AvgMinute

答案 1 :(得分:0)

这也会照顾你。

Select  Convert(Varchar(5),Convert(Time,DateAdd(mi,Avg(DateDiff(mi,0,Convert(DateTime,TimeColumn))),0)))
From    TableName

答案 2 :(得分:0)

解决方案是使用分钟,然后将这些分钟转换为小时和分钟:

avg(DATEPART(hh,TimeSpent)*60 + DATEPART(mi,TimeSpent)) / 60 as AvgHour,
avg(DATEPART(hh,TimeSpent)*60 + DATEPART(mi,TimeSpent)) % 60 as AvgMinute