2014-09-23 3 views
0

Я новичок в SQL, и мне было интересно, можно ли достичь следующего.Вычисление общего времени в месте с SQL Server datetime

Использование SQL Server 2012 Я хотел бы найти общее время, которое данный объект провел в одном месте за считанные минуты. Для каждого объекта есть несколько записей, поскольку они, возможно, неоднократно входили и выходили из заданного места в течение дня, я просто хочу найти общее время, затраченное в минутах на все время, потраченное на заданное местоположение.

В таблице есть две колонки datetime, которые отображают Starttime и Endtime, а также идентификатор местоположения и идентификатор объекта.

Мне удалось найти способ разделить разницу между Starttime и Endtime для одного события, но я хочу суммировать все события в местоположении, которое будет отображаться как общее время.

Пожалуйста, дайте мне знать, если мне нужно дать больше информации

+0

Хотите ли вы иметь несколько местоположений (например, различных областей офиса) или только один (как сам офис)? В последнем случае вы можете использовать минимальное время-время как время начала и максимальное конечное время как время, когда они покинули местоположение. Если первый, вам нужно будет сделать это, сгруппированное по каждому месту, которое вы хотите пометить –

ответ

2

Что вам нужно сделать, это рассчитать разницу дат между местами, где компания уже проводило время, как показано ниже

SELECT 
* 
FROM MyTable 

Результат Значения

Starttime    Endtime     LocationID EntityID 
2014-09-23 14:07:43  2014-09-23 16:07:43  2   2 
2014-09-23 14:09:03  2014-09-23 20:09:03  3   2 
2014-09-23 14:09:51  2014-09-23 21:09:51  8   2 
2014-09-23 14:15:10  2014-09-23 21:15:10  8   3 
2014-09-23 14:15:16  2014-09-23 17:15:16  8   3 
2014-09-23 14:15:23  2014-09-23 22:15:23  4   3 
2014-09-23 14:15:32  2014-09-23 15:15:32  5   3 
2014-09-23 14:06:26  2014-09-23 14:06:26  1   2 

Используйте приведенный ниже запрос, чтобы получить желаемый результат

Значения
SELECT 
    DATEDIFF(MINUTE, MIN(Starttime), MAX(Endtime)) TotalTimeSpentInMinutes, 
    LocationID 
FROM MyTable 
WHERE EntityID = 2 
GROUP BY LocationID 

Результат будет

TotalTimeSpentInMinutes LocationID 
0      1 
120      2 
360      3 
420      8 
+0

Большое спасибо за это, он отлично работал! Спасибо всем остальным за помощь – Zuzana

1
select LocationId , SUM(DATEDIFF(MINUTE, StartTime,EndTime)) 
from locationdatetime 
group by LocationId 

enter image description here

Смежные вопросы