Postgres 9.3.5、PostGIS 2.1.4。
データベースに 2 つのテーブル (polygons
とpoints
) があります。
points
それぞれ何個入っているか知りたいですpolygon
。ポリゴンあたり 0 ポイントまたは 200000 以上になります。
私point
のテーブルは次のようになります。
x y lan
10 11 en
10 11 fr
10 11 en
10 11 es
10 11 en
- #just for demonstration/clarification purposes
13 14 fr
13 14 fr
13 14 es
-
15 16 ar
15 16 ar
15 16 ps
ポリゴンごとのポイント数を単純に数えたいわけではありません。lan
各ポリゴンで最も頻繁に発生するものを知りたいです。-
したがって、それぞれがポイントが新しいポリゴンに分類されていることを示していると仮定すると、結果は次のようになります。
Polygon
テーブル:
polygon Count lan
1 3 en
2 2 fr
3 2 ar
これは私がこれまでに得たものです。
SELECT count(*), count.language AS language, hexagons.gid AS hexagonsWhere
FROM hexagonslan AS hexagons,
points_count AS france
WHERE ST_Within(count.geom, hexagons.geom)
GROUP BY language, hexagonsWhere
ORDER BY hexagons DESC;
それは私に次のことを与えます:
Polygon Count language
1 3 en
1 1 fr
1 1 es
2 2 fr
2 1 es
3 2 ar
3 1 ps
不明な点が 2 つあります。
- 最大値のみを取得するには?
- 万一最大値が同じである場合はどのように扱われますか?