特定の値に達するまで現在の合計を作成しているこの質問に非常に似たクエリがあります。私の場合、目的の人口に達するまで郡の人口を数えています。
ただし、lng/lat までの距離で検索を並べ替えて、最も近い郡を最初に追加したいと考えています。以下でこのクエリを実行していますが、結果が得られません。代わりに、ORDER BY row_id
または SPATIALLY で計算されていない列を実行すると、結果が返されます。2 つの句を使用して試してみましWITH
たが、まだ結果が得られません。適切に入力されていない可能性があるため、整数としてキャストしようとしましdistance
たが、それは役に立ちませんでした。
このエンドポイントでクエリを実行できるテスト サーバーをセットアップしました
http://sqltestmcr.cartodb.com/api/v2/sql?q=<your query statement here>
これは私が試しているクエリです。以下は、機能するバリエーションです。このリンクを使用して、このクエリの結果を確認できます。
http://sqltestmcr.cartodb.com/api/v2/sql?q=SELECT%20*%20FROM%20(%20SELECT%20county,%20the_geom,%20distance,%20row_id_2,%20sum(population)%20over%20(order%20by%20distance%20asc)%20as%20running_total%20FROM%20(%20SELECT%20row_id,%20county,%20population,%20the_geom,%20row_id%20*%202%20AS%20row_id_2,%20ST_Distance(%20ST_Centroid(the_geom),%20ST_GeomFromText('POINT(-72.1235%2042.3521)',%204326)%20)%20AS%20distance%20FROM%20counties_ny_export)%20sq1)%20sq2%20WHERE%20running_total%20%3C=%201400
SELECT
*
FROM (
SELECT
county,
the_geom,
distance,
row_id_2,
sum(population) over (order by distance asc) as running_total
FROM (
SELECT
row_id,
county,
population,
the_geom,
row_id * 2 AS row_id_2,
ST_Distance(
ST_Centroid(the_geom),
ST_GeomFromText('POINT(-72.1235 42.3521)', 4326)
) AS distance
FROM
counties_ny_export
) sq1
) sq2
where running_total <= 1400
次の 2 つのクエリは、
リンクを設定ORDER BY row_id
またはテストする場所で機能します。
ORDER BY row_id_2
row_id
http://sqltestmcr.cartodb.com/api/v2/sql?q=SELECT%20*%20FROM%20(%20SELECT%20county,%20the_geom,%20distance,%20row_id_2,%20sum(population)%20over%20(order%20by%20row_id%20asc)%20as%20running_total%20FROM%20(%20SELECT%20row_id,%20county,%20population,%20the_geom,%20row_id%20*%202%20AS%20row_id_2,%20ST_Distance(%20ST_Centroid(the_geom),%20ST_GeomFromText('POINT(-72.1235%2042.3521)',%204326)%20)%20AS%20distance%20FROM%20counties_ny_export)%20sq1)%20sq2%20WHERE%20running_total%20%3C=%201400
SELECT
*
FROM (
SELECT
county,
the_geom,
distance,
row_id_2,
sum(population) over (order by row_id asc) as running_total
FROM (
SELECT
row_id,
county,
population,
the_geom,
row_id * 2 AS row_id_2,
ST_Distance(
ST_Centroid(the_geom),
ST_GeomFromText('POINT(-72.1235 42.3521)', 4326)
) AS distance
FROM
counties_ny_export
) sq1
) sq2
where running_total <= 1400
とのリンクをテストrow_id_2
:
http://sqltestmcr.cartodb.com/api/v2/sql?q=SELECT%20*%20FROM%20(%20SELECT%20county,%20the_geom,%20distance,%20row_id_2,%20sum(population)%20over%20(order%20by%20row_id_2%20asc)%20as%20running_total%20FROM%20(%20SELECT%20row_id,%20county,%20population,%20the_geom,%20row_id%20*%202%20AS%20row_id_2,%20ST_Distance(%20ST_Centroid(the_geom),%20ST_GeomFromText('POINT(-72.1235%2042.3521)',%204326)%20)%20AS%20distance%20FROM%20counties_ny_export)%20sq1)%20sq2%20WHERE%20running_total%20%3C=%201400