我有一个记录跑步记录的表,它有以下几列:
| ID|距离|运行时间|运行日期|
| --|--|--|--|
| 1 | 10 |时间01:35:00| 2023-12-04 2023-12-04 2023-12-04|
| 2 | 10 |时间01:41:00| 2023-12-05 - 2023 -05|
我想计算某个日期范围内的每英里平均配速(格式为mm:ss)。例如,日期范围为12/04-12/05,每英里配速为09:48。第一步是计算出总英里数和分钟数。然后将分钟数除以总英里数。最后一步是将分钟数转换为mm:ss格式。
以下是我到目前为止所能想到的:
with average as (
select
runTime.totalTime / distance.totalDistance as averagePace
from
((
select
sum(distance) as totalDistance
from
runs
where
run_date >= '2023-12-04'
and run_date <= '2023-12-05') ) as distance,
(
select
extract / 60 as totalTime
from
(
select
extract(EPOCH
from
sum )
from
(
select
sum(run_time)
from
runs
where
run_date >= '2023-12-04'
and run_date <= '2023-12-05'))) as runTime)
select
TO_CHAR((averagePace || ' minute')::interval,
'MI:SS')
from
average
字符串
查询计算正确的速度,但我觉得它不需要这么长。有没有一个更干净,更有效的方法来计算每英里的平均速度?
1条答案
按热度按时间dojqjjoe1#
如果你的
run_time
存储为interval
数据类型,那么这将工作:字符串
请参见this fiddle.