在 SQL 服务器中使用 SUM 函数将 nvarchar 值添加为时间
Adding nvarchar values as Time using SUM function in SQL Server
我在SQL服务器上还是菜鸟,所以我不太明白这个问题。
我有一列填充了 nvarchar
个值,我需要将这些值求和为 durationOfWork
,因此它需要对时间值执行求和函数。
列是这样的:
DurationOfWork FirstName
--------------------------
1h:30min Peter
2h:0min Sandra
0h:10min Peter
5h:32min Peter
2h:0min Dave
1h:43min Dave
0h:25min Sandra
我需要 return 每个人的工作时间总和。
SUM(DurationOfWork) FirstName
------------------------------
7h:12min Peter
2h:25min Sandra
3h:43min Dave
任何帮助都会很棒。
真痛苦。我建议将持续时间计算为分钟或小数小时,而不是转换回字符串。这个想法是从字符串中提取你想要的内容并将其放在更好的格式中:
select firstname,
sum( convert(int, left(durationofwork, 1)) * 60 +
convert(int, substring(durationofwork, 4, 2))
) as duration_minutes
from t
group by firstname;
如果您的值总是小于 24 小时——它们似乎基于格式——那么我建议将它们存储为 time
值而不是字符串。也就是说,sum()
s 可能会超过 24 小时,因此您不能将 time
s 用于聚合结果。
编辑:
处理可变分钟:
select firstname,
sum( convert(int, left(durationofwork, 1)) * 60 +
convert(int, replace(substring(durationofwork, 4, 2), 'm', ''))
) as duration_minutes
from t
group by firstname;
我在SQL服务器上还是菜鸟,所以我不太明白这个问题。
我有一列填充了 nvarchar
个值,我需要将这些值求和为 durationOfWork
,因此它需要对时间值执行求和函数。
列是这样的:
DurationOfWork FirstName
--------------------------
1h:30min Peter
2h:0min Sandra
0h:10min Peter
5h:32min Peter
2h:0min Dave
1h:43min Dave
0h:25min Sandra
我需要 return 每个人的工作时间总和。
SUM(DurationOfWork) FirstName
------------------------------
7h:12min Peter
2h:25min Sandra
3h:43min Dave
任何帮助都会很棒。
真痛苦。我建议将持续时间计算为分钟或小数小时,而不是转换回字符串。这个想法是从字符串中提取你想要的内容并将其放在更好的格式中:
select firstname,
sum( convert(int, left(durationofwork, 1)) * 60 +
convert(int, substring(durationofwork, 4, 2))
) as duration_minutes
from t
group by firstname;
如果您的值总是小于 24 小时——它们似乎基于格式——那么我建议将它们存储为 time
值而不是字符串。也就是说,sum()
s 可能会超过 24 小时,因此您不能将 time
s 用于聚合结果。
编辑:
处理可变分钟:
select firstname,
sum( convert(int, left(durationofwork, 1)) * 60 +
convert(int, replace(substring(durationofwork, 4, 2), 'm', ''))
) as duration_minutes
from t
group by firstname;