私は数千の行があり、それぞれ名前(テキスト)、コード(テキスト)、都市(列)がある単一のテーブルをPostgresテキスト)とgeom(ジオメトリ)の統計領域単位(郡のような)。ジオメトリは完全にテッセレーションします。SQL:競合する型の和集合の値を置き換える方法
私はいくつかの条件を満たすすべての行を選択し、残りの行を1つの行に集約する単一のクエリを作成しようとしています。その1行では、名前とコードには関心がありません。集計されたgeomだけです。例えば、このような何か:
code | name | geom
------+--------------------+---------
102 | Central Coast | geo...
115 | Sydney - Baulkham | geo...
116 | Sydney - Blacktown | geo...
117 | Sydney - City | geo...
118 | Sydney - Eastern | geo...
000 | Remaining Counties | geo... <---Second SELECT just to get this row
は、私は、次を思い付くthis answerを使用:
SELECT code, name, ST_Force2D(geom) FROM mytable WHERE mytable.city = 'Greater Sydney' UNION
SELECT
CASE WHEN count(code) > 0 THEN '0' ELSE 'x' END AS code,
CASE WHEN count(name) > 0 THEN 'Rest of Sydney' ELSE 'x' END AS name,
ST_Collect(geom)
FROM mytable WHERE mytable.city <> 'Greater Sydney';
これは非常に単純な何かを達成するのは本当に遠回りと不明瞭な方法のように思えます。これを行うより良い方法はありますか?