计算整个轨道最快的5000 m时间

时间:2019-06-08 06:39:15

标签: sql sql-server sql-server-2017

我有一台自行车电脑,每秒钟记录我走了多远

数据的简化版本如下:

 declare @DistanceTable Table
    (
      ID int,
      Time DateTime2,
      DistanceMeters float
    )

insert into @DistanceTable   values 
    (1, '2018-08-10 07:17:48', 3.8099999427795410),
    (2, '2018-08-10 07:17:49', 7.7600002288818359),
    (3, '2018-08-10 07:17:50', 12.3299999237060547),
    (4, '2018-08-10 07:17:51', 18.0000000000000000),
    (5, '2018-08-10 07:17:52', 24.8999996185302734),
    (6, '2018-08-10 07:17:53', 32.1599998474121094),
    (7, '2018-08-10 07:17:54', 40.7200012207031250),
    (8, '2018-08-10 07:17:55', 49.7599983215332031),
    (9, '2018-08-10 07:17:57', 68.6100006103515625),
    (10, '2018-08-10 07:17:58', 79.3199996948242188),
    (11, '2018-08-10 07:18:00', 100.1900024414062500),
    (12, '2018-08-10 07:18:02', 122.7099990844726563),
    (13, '2018-08-10 07:18:03', 134.1900024414062500),
    (14, '2018-08-10 07:18:04', 145.9199981689453125),
    (15, '2018-08-10 07:18:05', 158.4700012207031250),

    (16, '2018-08-10 07:24:04', 5003.4101562500000000), --5000 meters driven 
    (17, '2018-08-10 07:24:05', 5018.7797851562500000),
    (18, '2018-08-10 07:24:06', 5034.0498046875000000),
    (19, '2018-08-10 07:24:07', 5048.8901367187500000),
    (20, '2018-08-10 07:24:08', 5063.8798828125000000),
    (21, '2018-08-10 07:24:09', 5079.0200195312500000),
    (22, '2018-08-10 07:24:13', 5141.0600585937500000),
    (23, '2018-08-10 07:24:17', 5201.7500000000000000),
    (24, '2018-08-10 07:24:21', 5261.8798828125000000),
    (25, '2018-08-10 07:24:23', 5290.2900390625000000),
    (26, '2018-08-10 07:24:28', 5363.7099609375000000),
    (27, '2018-08-10 07:24:33', 5435.9101562500000000),
    (28, '2018-08-10 07:24:34', 5450.8901367187500000),
    (29, '2018-08-10 07:24:35', 5465.4199218750000000),
    (30, '2018-08-10 07:24:36', 5480.5400390625000000)

我正在尝试计算整个轨道的最快5000 m时间

所以我想计算驱动5000 m后每条记录的最后5000米的时间

1 个答案:

答案 0 :(得分:2)

您遇到的一个问题是,距离永远不会精确到5,000米。一种近似方法是获取5,000米以外的第一个值,并将其用于计算:

cursor

您的数据点非常接近,因此实际总距离将为5009米,5002米,依此类推。那可能已经足够好了,所以我就在这里停止。

实际上可以插值第一和最后一条腿以获得准确的结果,但是要进行很小的改进会花费很多精力。