HI guys, 我的問題是這樣的: 我有這個列:PHONE_NR,TIME(時間字段),意思是主叫電話號碼和通話時間。我需要將電話分組並將總結分鐘。 Filds看起來是這樣的:SUM分鐘SQL服務器
nr time
726028xxx 00:07:07
735560css 00:07:37
726028xxx 00:07:55
HI guys, 我的問題是這樣的: 我有這個列:PHONE_NR,TIME(時間字段),意思是主叫電話號碼和通話時間。我需要將電話分組並將總結分鐘。 Filds看起來是這樣的:SUM分鐘SQL服務器
nr time
726028xxx 00:07:07
735560css 00:07:37
726028xxx 00:07:55
SELECT PHONE_NR, SUM(DATEPART(minute, TIME)) FROM [table] GROUP BY PHONE_NR;
據我所知,這應該兩個SQL服務器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
如果通話時間超過一小時,這種情況會繼續嗎? – 2010-04-12 10:14:37
@Robin - 它需要編輯以包含小時部分 - 我剛剛編輯了這個到我的答案! – 2010-04-12 10:18:27
@Robin,我剛剛編輯了我的答案,所以它也可以工作幾個小時。 – 2010-04-12 10:23:08
您可以使用DATEDIFF得到,因爲時間已經過去了分鐘的總數「零」
SELECT
[PHONE_NR],
SUM(DATEDIFF(minute, '00:00:00', [TIME]))
FROM
[YourTable]
GROUP BY
[PHONE_NR]
羅賓,我已編輯你的答案,包括'SUM()';-) – 2010-04-12 10:17:27
公頃,謝謝....我沒有運行它或任何東西,只是鍵入它:) – 2010-04-12 10:25:47
10q很多人,我用DATEDIF,它的作品非常棒:) – sandu 2010-04-12 10:46:12
declare @v1 varchar(50)
declare @v2 varchar(50)
set @v1='03:10'
set @v2='01:50'
--select cast(left(v1,2) as int) + cast(left(v2,2)as int)
select
cast(
cast(left(@v1,2) as int) + cast(left(@v2,2)as int)
+(cast(right(@v1,2) as int) + cast(right(@v2,2) as int))/60 as varchar)
+':'+cast((cast(right(@v1,2) as int) + cast(right(@v2,2) as int))%60 as varchar)
如果你的問題解決了,你應該接受的標記答案。 – daniloquio 2011-09-30 22:23:34