2 つの郵便番号間の距離 (マイル単位) を計算する関数 zipdistance(zipfrom,zipto) と、次の表を指定します。
create table zips_required(
zip varchar2(5)
);
create table zips_available(
zip varchar2(5),
locations number(100)
);
zips_required テーブルから各郵便番号と、合計 (場所) >= n を生成する最小距離を返すクエリを作成するにはどうすればよいですか。
これまでは、基準を満たすまで、半径ごとに徹底的なループ クエリを実行していました。
--Do this over and over incrementing the radius until the minimum requirement is met
select count(locations)
from zips_required zr
left join zips_available za on (zipdistance(zr.zip,za.zip)< 2) -- Where 2 is the radius
リストが大きい場合、これには時間がかかる場合があります。これは、次の行に沿ったオラクル分析クエリで実行できるように感じます。
min() over (
partition by zips_required.zip
order by zipdistance( zips_required.zip, zips_available.zip)
--range stuff here?
)
私が行った唯一の分析クエリは、「row_number over (partition by order by)」ベースであり、これで未知の領域に足を踏み入れています。これに関するガイダンスは大歓迎です。