SUM Minuten SQL Server

stimmen
2

HALLO Jungs, geht mein litle Problem wie folgen aus: Ich habe diese Spalten: PHONE_NR, TIME (Zeitfeld), das heißt die anrufende Telefonnummer und Dauer nennen. Ich muss Gruppe Telefon nr und die Minuten summieren. Filds sieht wie folgt aus:

 nr          time 
726028xxx 00:07:07 
735560css 00:07:37 
726028xxx 00:07:55 
Veröffentlicht am 12/04/2010 um 11:00
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
5
SELECT PHONE_NR, SUM(DATEPART(minute, TIME)) FROM [table] GROUP BY PHONE_NR;

Soweit ich weiß , das sollte für SQL Server arbeitet DATETIMEund die 2008 TIMEDatentypen.

Beispiel:

DECLARE @tbl TABLE
(
    phone_nr varchar(10),
    call_time TIME
);

INSERT IGNORE  INTO @tbl VALUES ('726028xxx', '00:07:07');
INSERT IGNORE  INTO @tbl VALUES ('735560css', '00:07:37');
INSERT IGNORE  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;

Ergebnisse in:

phone_nr  | minutes
726028xxx | 14
735560css | 7

EDIT :

Diese Version ist identisch mit dem oben, außer es berücksichtigt auch die Sekunden und Stunden (zB 1 Stunde 7 min 07secs = 67,117 Minuten), so ist es viel genauer.

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;

In den folgenden Ergebnisse , wenn der erste Datensatz ist 01:07:07.

phone_nr  | minutes
726028xxx | 75.033332
735560css | 7.616666
Beantwortet am 12/04/2010 um 11:02
quelle vom benutzer

stimmen
1

Sie können DATEDIFF verwenden, um die Gesamtzahl der Minuten zu erhalten, die seit der Zeit „Null“ bestanden hat,

SELECT
 [PHONE_NR],
 SUM(DATEDIFF(minute, '00:00:00', [TIME]))
FROM
 [YourTable]
GROUP BY
 [PHONE_NR]
Beantwortet am 12/04/2010 um 11:12
quelle vom benutzer

stimmen
0
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)
Beantwortet am 30/05/2013 um 11:45
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more