san*_*ndu 2 sql sql-server time sum
嗨伙计们,我的小问题是这样的:我有这个列:PHONE_NR,TIME(时间字段),意思是主叫电话号码和通话时间.我需要分组电话和总和分钟.Filds看起来像这样:
nr time
726028xxx 00:07:07
735560css 00:07:37
726028xxx 00:07:55
Run Code Online (Sandbox Code Playgroud)
SELECT PHONE_NR, SUM(DATEPART(minute, TIME)) FROM [table] GROUP BY PHONE_NR;
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该适用于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;
Run Code Online (Sandbox Code Playgroud)
结果是:
phone_nr | minutes
726028xxx | 14
735560css | 7
Run Code Online (Sandbox Code Playgroud)
编辑:
此版本与上述版本相同,不同之处在于它还考虑了秒和小时(例如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;
Run Code Online (Sandbox Code Playgroud)
如果第一条记录是以下结果如下01:07:07.
phone_nr | minutes
726028xxx | 75.033332
735560css | 7.616666
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4092 次 |
| 最近记录: |