如何计算时间戳的总和,然后执行所花费的时间百分比

时间:2011-11-03 07:35:28

标签: sql

我正在为过去几天的报告编写SQL,但现在我遇到了这个问题。

场景:我的用户已经工作了几个小时。我想知道特定工作花费的时间百分比。

表格详情:

user  work      allocated_time        completed_time      time    %age_of_work
amit  operation 24-jul-200810:35:00   24-jul-200811:42:00 1:7:0   ?
amit  research  24-jul-200812:00:00   24-jul-200802:42:00 2:42:0  ?

工作的百分比是他7月24日花在运营和研究上的时间。请帮帮我。

1 个答案:

答案 0 :(得分:0)

您的问题是您无法在SQL中对TIME类型求和。

相反,您可能希望计算花费的时间(如果需要,可以计算几分钟)。

尝试这样的事情:

declare @table table 
(
    [user] nvarchar(50),
    [work] nvarchar(50),
    [allocated_time] datetime,
    [completed_time] datetime
)

insert @table values ('amit', 'operation', '24-jul-2008 10:35:00PM', '24-jul-2008 11:42:00PM')
insert @table values ('amit', 'research', '24-jul-2008 12:00:00PM', '24-jul-2008 02:42:00PM')

declare @totalminutes int

select @totalminutes = sum([minutes]) 
from (select DATEDIFF(MINUTE, [allocated_time], [completed_time]) as [minutes] from @table) t

select *, 
    DATEDIFF(MINUTE, [allocated_time], [completed_time]) as [minutes],
    CONVERT(FLOAT, DATEDIFF(MINUTE, [allocated_time], [completed_time])) / @totalminutes as [perc]
from @table