データを 52.8 フィートのブロックにグループ化できます。これを行う 1 つの方法は、距離を 52.8 で割り、整数に丸めることです。このように、25 はグループ 1 に属し、100 はグループ 2 に属し、110 はグループ 3 に属します。
SQL Server では、次のように記述します。
select
52.8 * cast(dist/52.8 as int) as Distance
, avg(value1)
, avg(value2)
from YourTable
group by cast(dist/52.8 as int)
以下は、データの例です。データは 0 から 0.04 まで実行されるため、0.01 フィート ブロックごとに平均を計算するようにしました。
declare @Road table (RecID int, Begin_MP float, End_MP float)
insert into @Road select 100, 0, 0.56
declare @Values table (RecID int, MP float, Value1 float, Value2 float)
insert into @Values values
(100, 0 , 159 , 127.7),
(100, 0.003, 95.3 , 115.3),
(100, 0.006, 82.3 , 107),
(100, 0.009, 56.5 , 74.5),
(100, 0.011, 58.1 , 89.1),
(100, 0.014, 95.2 , 78.8),
(100, 0.017, 108.9, 242.5),
(100, 0.02 , 71.8 , 73.3),
(100, 0.023, 84.1 , 80.2),
(100, 0.026, 65.5 , 66.1),
(100, 0.028, 122 , 135.8),
(100, 0.031, 99.9 , 230.7),
(100, 0.034, 95.7 , 111.5),
(100, 0.037, 127.3, 74.3),
(100, 0.04 , 140.7, 543.1);
select
r.RecID
, cast(v.MP/0.01 as int)*0.01 as StartMP
, AVG(v.Value1) as AvgVal1
, AVG(v.Value2) as AvgVal2
from @Road as r
left join @Values as v
on r.RecID = v.RecID
group by r.RecID, cast(v.MP/0.01 as int)
これは以下を出力します:
RecID StartMP AvgVal1 AvgVal2
100 0.00 98,275 106,125
100 0.01 87,4 136,8
100 0.02 85,85 88,85
100 0.03 107,63 138,83
100 0.04 140,7 543,1