SELECT PHONE_NR, SUM(DATEPART(minute, TIME)) FROM [table] GROUP BY PHONE_NR;
Насколько я знаю, это должно работать как для SQL Server DATETIME
, так и для типов данных 2008 TIME
.
Пример:
DECLARE @tbl TABLE
(
phone_nr varchar(10),
call_time TIME
);
INSERT INTO @tbl VALUES ('726028xxx', '00:07:07');
INSERT INTO @tbl VALUES ('735560css', '00:07:37');
INSERT INTO @tbl VALUES ('726028xxx', '00:07:55');
SELECT phone_nr, SUM(DATEPART(minute, call_time)) AS total_call_time FROM @tbl GROUP BY phone_nr;
Результат:
phone_nr | minutes
726028xxx | 14
735560css | 7
EDIT
Эта версия идентична вышеупомянутой, за исключением того, что она также учитывает секунды и часы (например, 1 час 7 минут 07 секунд = 67.117 минут), поэтому она намного точнее.
SELECT
phone_nr,
SUM(CAST(DATEPART(second, call_time) + (DATEPART(minute, call_time) * 60) + (DATEPART(hour, call_time) * 3600) AS decimal) / 60) AS total_call_time
FROM
@tbl
GROUP BY
phone_nr;
Результат будет следующим, если первая запись была 01:07:07
.
phone_nr | minutes
726028xxx | 75.033332
735560css | 7.616666