如何计算 SQL 午夜的平均时间?
How to calculate average of time with respect to midnight in SQL?
我有以下数据 - 我需要计算此时间相对于 SQL 午夜时间的平均值,请问我应该如何计算?如果我在几秒钟内转换它们并简单地取平均值,我得到的答案是:10:17:20 这是错误的。我需要 ans 应该在 23:00
附近的某个地方
0:06:43
0:10:26
0:12:49
0:18:21
0:19:35
0:22:40
1:57:01
2:21:41
15:56:12
16:40:22
21:31:45
23:26:56
23:38:29
23:38:30
23:38:33
考虑这个小例子。 - 我的数据是
2:21:41
0:19:35
0:18:21
23:38:33
为此我应该得到 00:30 的答案...你能告诉我应该如何在 SQL 中计算吗?
我的想法是把time
改成interval
。这样你就可以改变你的价值在午夜左右通过负值:
CASE WHEN value > '12:00:00' THEN value - time '24:00' ELSE value - time '00:00' END
参见 documentation 中的 time - time
运算符。
您将获得:
00:06:43 -> 00:06:43
00:10:26 -> 00:10:26
00:12:49 -> 00:12:49
00:18:21 -> 00:18:21
00:19:35 -> 00:19:35
00:22:40 -> 00:22:40
01:57:01 -> 01:57:01
02:21:41 -> 02:21:41
15:56:12 -> -08:03:48
16:40:22 -> -07:19:38
21:31:45 -> -02:28:15
23:26:56 -> -00:33:04
23:38:29 -> -00:21:31
23:38:30 -> -00:21:30
23:38:33 -> -00:21:27
现在您可以计算平均值了。对于指定的数据,您将得到 -00:54:39.8
,即 23:05:20.2
(对于负值,您需要 + time '24:00'
)。
所以,最终的公式是:
AVG(
CASE WHEN value > '12:00:00' THEN value - time '24:00' ELSE value - time '00:00' END
) + time '24:00'
你总是可以+ time '24:00'
,因为如果超过 24 小时,时间将被换行。
我有以下数据 - 我需要计算此时间相对于 SQL 午夜时间的平均值,请问我应该如何计算?如果我在几秒钟内转换它们并简单地取平均值,我得到的答案是:10:17:20 这是错误的。我需要 ans 应该在 23:00
附近的某个地方0:06:43
0:10:26
0:12:49
0:18:21
0:19:35
0:22:40
1:57:01
2:21:41
15:56:12
16:40:22
21:31:45
23:26:56
23:38:29
23:38:30
23:38:33
考虑这个小例子。 - 我的数据是
2:21:41
0:19:35
0:18:21
23:38:33
为此我应该得到 00:30 的答案...你能告诉我应该如何在 SQL 中计算吗?
我的想法是把time
改成interval
。这样你就可以改变你的价值在午夜左右通过负值:
CASE WHEN value > '12:00:00' THEN value - time '24:00' ELSE value - time '00:00' END
参见 documentation 中的 time - time
运算符。
您将获得:
00:06:43 -> 00:06:43
00:10:26 -> 00:10:26
00:12:49 -> 00:12:49
00:18:21 -> 00:18:21
00:19:35 -> 00:19:35
00:22:40 -> 00:22:40
01:57:01 -> 01:57:01
02:21:41 -> 02:21:41
15:56:12 -> -08:03:48
16:40:22 -> -07:19:38
21:31:45 -> -02:28:15
23:26:56 -> -00:33:04
23:38:29 -> -00:21:31
23:38:30 -> -00:21:30
23:38:33 -> -00:21:27
现在您可以计算平均值了。对于指定的数据,您将得到 -00:54:39.8
,即 23:05:20.2
(对于负值,您需要 + time '24:00'
)。
所以,最终的公式是:
AVG(
CASE WHEN value > '12:00:00' THEN value - time '24:00' ELSE value - time '00:00' END
) + time '24:00'
你总是可以+ time '24:00'
,因为如果超过 24 小时,时间将被换行。