大家好, 我的小问题是这样的: 我有这样的列:PHONE_NR,TIME(时间字段),意思是主叫电话号码和通话时长。我需要对电话号码进行分组并汇总分钟数。菲尔德看起来像这样:
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 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
编辑:
此版本与上述版本相同,只是它还考虑了秒和小时(例如 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
关于sql - SUM 分钟 SQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2621141/