2011-11-03 137 views
0

我正在爲過去幾天的報告工作,但現在我陷入了這個問題。如何計算時間戳的總和,然後執行花費的時間百分比

場景:我有幾個小時工作過的用戶。我想知道花費在特定工作上的時間百分比。

表的細節:

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。請幫幫我。

+2

歡迎堆棧溢出!您正在詢問如何編寫查詢,但如果我們不知道您使用的是什麼RDBMS(Oracle,MySQL,SQL Server,PostGreSQL,SQLite ...)以及該RDBMS的版本,則很難回答。它們的SQL實現有所不同,有些功能可以用來提高查詢效率。此外,SQL語法可能會有所不同。對於這個特定的問題,請說明什麼是時間戳列(DATE,TEXT)的類型親和力? – Benoit

回答

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 
+0

我們使用的RDBMS的類型是oracle ... – user1025647

+0

愉快benoit ...作爲查詢上面提到的kirk,沒有工作 – user1025647

相關問題