sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL:バウンディングボックス内に旅行を表示する

    座標はx、y列に保存されるため、 ST_MakePointを使用する必要があります 適切なジオメトリを作成します。その後、関数 ST_MakeEnvelopeを使用してBBOXを作成できます。 ST_Contains > 、例:

    WITH bbox(geom) AS (
      VALUES (ST_MakeEnvelope(-8.68494,41.24895,-8.47569,41.11591,4326))
    )
    SELECT * FROM trips,bbox
    WHERE 
      ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_start,lat_start),4326)) AND
      ST_Contains(bbox.geom,ST_SetSRID(ST_MakePoint(lon_end,lat_end),4326));
    

    注: CTE これは実際には必要ではなく、説明のためだけにクエリに含まれています。 ST_MakeEnvelopeを繰り返すことができます WHEREの両方の条件で機能します bbox.geomの代わりに句 。このクエリは、SRS WGS84も想定しています。 (4326)。



    1. 最初のテーブルの外部キー

    2. 1つの列の値を複数の列の値に分割する

    3. Railsがクエリに参加

    4. 合計を計算し、前の行から合計を追加するSQLクエリ