Torna al Thread

USE tempdb; CREATE TABLE dbo.EngineerTime( EngineerTimeID int NOT NULL IDENTITY PRIMARY KEY, FirstName varchar(10) NOT NULL, StartTime datetime NOT NULL, EndTime datetime NOT NULL ); INSERT dbo.EngineerTime VALUES('Lorenzo', CURRENT_TIMESTAMP, DATEADD(minute, 5, CURRENT_TIMESTAMP)); WAITFOR DELAY '00:00:12'; INSERT dbo.EngineerTime VALUES('Lorenzo', CURRENT_TIMESTAMP, DATEADD(minute, 2, CURRENT_TIMESTAMP)); WAITFOR DELAY '00:01:00'; INSERT dbo.EngineerTime VALUES('Lorenzo', CURRENT_TIMESTAMP, DATEADD(minute, 8, CURRENT_TIMESTAMP)); WAITFOR DELAY '00:00:28'; INSERT dbo.EngineerTime VALUES('Andrea', CURRENT_TIMESTAMP, DATEADD(minute, 12, CURRENT_TIMESTAMP)); WAITFOR DELAY '00:00:45'; INSERT dbo.EngineerTime VALUES('Andrea', CURRENT_TIMESTAMP, DATEADD(minute, 1, CURRENT_TIMESTAMP)); WAITFOR DELAY '00:02:16'; INSERT dbo.EngineerTime VALUES('Gianluca', CURRENT_TIMESTAMP, DATEADD(minute, 23, CURRENT_TIMESTAMP)); SELECT * FROM dbo.EngineerTime; /* Output: EngineerTimeID FirstName StartTime EndTime -------------- ---------- ----------------------- ----------------------- 1 Lorenzo 2007-10-22 10:48:49.263 2007-10-22 10:53:49.263 2 Lorenzo 2007-10-22 10:49:01.263 2007-10-22 10:51:01.263 3 Lorenzo 2007-10-22 10:50:01.263 2007-10-22 10:58:01.263 4 Andrea 2007-10-22 10:50:29.263 2007-10-22 11:02:29.263 5 Andrea 2007-10-22 10:51:14.263 2007-10-22 10:52:14.263 6 Gianluca 2007-10-22 10:53:30.263 2007-10-22 11:16:30.263 (6 row(s) affected) */ WITH CTE_SecondsPerUser([User], Seconds) AS ( SELECT FirstName, SUM(DATEDIFF(SECOND, StartTime, EndTime)) FROM dbo.EngineerTime GROUP BY FirstName ) SELECT [User] , (Seconds / 86400) AS Days , (Seconds / 3600) - (Seconds / 86400 * 24) AS Hours , (Seconds / 60) - (Seconds / 86400 * 1440) - ((Seconds / 3600) - (Seconds / 86400 * 24) * 60) AS Minutes , (Seconds % 60) AS Seconds FROM CTE_SecondsPerUser; /* Output: User Days Hours Minutes Seconds ---------- ----------- ----------- ----------- ----------- Andrea 0 0 13 0 Gianluca 0 0 23 0 Lorenzo 0 0 15 0 (3 row(s) affected) */ DROP TABLE dbo.EngineerTime;
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5