我正在为过去几天的报告编写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日花在运营和研究上的时间。请帮帮我。
答案 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