バス停とバス停から10ブロック以内のすべてのコーヒーショップを示すCOFFEEというテーブルがあるとします。
BusStationID| CoffeeShopID | Distance (in city blocks)
1|2103|2
1|2222|2
1|8864|7
1|9920|5
1|3544|2
1|4830|2
1|4823|6
1|9561|2
7|6262|2
7|8561|10
7|9510|5
7|2744|1
7|4223|9
7|5960|3
[編集:問題は、手続き的ではないクエリでこれを行う方法であることを明確にするため]
そして、バス停ごとに、最も近い5つのコーヒーショップまでの平均距離を表示するクエリ(procではない)を作成する必要があります。
特定のバス停に最も近いコーヒーショップのトップ5を取得できます。
select avg(top5.distance) as AvgDistToFiveClosest
from
(
select top 5 distance from COFFEE where busstationid = 1
order by distance
) as top5
しかし、それをサブクエリとして接続し、AvgDistToFiveClosestをメインクエリで返される列にするにはどうすればよいですか?
select BusStationId, AvgDistToFiveClosest
from COFFEE...
??????
上記のサンプルデータを考えると、クエリは次を返す必要があります。
BusStationID | AvgDistToFiveClosest
1 | 2
7 | 4