2つの郵便番号と以下の表の間の関数zipdistance(マイル)の距離を算出する(zipfrom、zipto)を考える:Oracleの分析質問
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」、そして私は踏みよこれで未知の領域に入る。これに関するガイダンスは大変ありがとうございます。各zip_required
に対して
これは近いと思います。あなたの例では、rnはちょうど距離で順序付けられた2つのジップの間の距離のランキングになります。私が必要とするのは、そのリスト内の最後のもののzipdistanceで、その場所の合計と以前のすべての場所がN以上です。 –
@Josh:これは最も近いN個の場所の距離を返します。あなたは何をしたいですか? – Quassnoi
Oracleクエリーで1を制限しますか?私は何かを逃した。 – tuinstoel