【发布时间】:2021-07-14 08:28:59
【问题描述】:
我有一个表格,每行都有一个开始时间和一个结束时间(日期时间,例如:2021-07-09 17:12:00)。
当我通过这个 SQL 查询计算结束时间和开始时间之间所有差异的总和时:
SELECT
TIME(SUM(TIMEDIFF(`end_time`, `start_time`))) AS TimeDiff
FROM
my_table
我得到一个以小时、分钟、秒表示的结果(例如:00:02:00)
现在我需要计算这个总和的以小时、分钟、秒表示的平均时间。 意思是:
SELECT
TIME(SUM(TIMEDIFF(`end_time`, `start_time`))) AS TimeDiff
FROM
my_table
TimeDiff/行数(以小时、分钟、秒表示)
你能帮帮我吗?真的谢谢
【问题讨论】:
-
如果您使用的数据库可以平均时间类型,那么只需将其包装在 AVG() 中。如果你用 aDB 不能,那么将时间转换成总秒数,取单个整数的平均值,然后再转换回来
-
顺便说一句,“表中所有时间的总和”似乎是一个值,所以平均值也是相同的值。也许您不应该将它们相加,而应取平均值
-
@CaiusJard 首先感谢。每行的结束时间和开始时间之间的差异是不同的。例如第一行是 1 分钟。第二个是3分钟。这些两个差异的总和是 4 分钟。我的平均值是 (1 + 3)/行数 -> 4/2 = 2 分钟。您写道:“将时间转换为总秒数,平均单个整数,然后转换回来”:我该怎么做?
-
您是否尝试过将 SUM 换成 AVG?如果您的数据库可以对时间求和,那么它也可以对它们进行平均。 AVG相当于SUM/COUNT,所以如果AVG不起作用,也许SUM(...)/COUNT(*)会
-
用您正在使用的数据库标记您的问题。