2017-10-19 3 views
1

各人がPostGISを使用してポリゴンとして定義された特定の場所を入力する回数を取得する必要があります。ここでアクションが発生した回数を取得する

は、私は、SQL文をどのように始まったのかである:

SELECT id_p 
FROM Movement 
WHERE ST_Contains('POLYGON((long1 lat1, long2 lat2, long3 lat3, long4 lat4))', 
        ST_MakePoint(longitude,latitude)) 
    AND (datehour::date BETWEEN '2017-01-01' AND '2017-01-31') 
    AND speed = 0 

enter image description here

答えて

2

あなたは基本カウントクエリやって試すことができます:あなたが追加することを検討可能性があり、このクエリをスピードアップするために

SELECT 
    id_p, 
    COUNT(*) AS cnt 
FROM 
    Movement 
WHERE 
    ST_Contains('POLYGON((long1 lat1, long2 lat2, long3 lat3, long4 lat4))', 
       ST_MakePoint(longitude,latitude)) AND 
    datehour::date BETWEEN '2017-01-01' AND '2017-01-31' AND 
    speed = 0 
GROUP BY 
    id_p; 

WHERE句で使用される列のインデックス、つまりdatehourspeedです。また、ST_Containsへの呼び出しに関与する列の地理空間索引を考慮することもできます。

関連する問題