sql - SUM 分钟 SQL 服务器

标签 sql sql-server time sum

大家好, 我的小问题是这样的: 我有这样的列: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/

相关文章:

web - 如何从我的网站检查到达率和响应时间?

java - 如何将新的持续时间与存储的持续时间进行比较并替换为两者中较短的一个?

sql - Jaro Winkler 距离算法在 Transact SQL 中的实现

sql-server - 如何从数据库中获取用户定义变量的值?

sql - 如何使用内部连接和案例语句更新表

SQL 数据库查询结果按 ChildrenIDs 和 subChildrenIDs 分组

sql - 将 IDENTITY 转换为数据类型 tinyint 时出现算术溢出错误

java - 根据用户的语言环境和偏好格式化日期和时间

java - JDBC:更新表的最佳方法?

sql - 电子商务桌面试运行问题