0
現在、同じIDを持つテーブルのサブセットに対して複数行の出力(単純最大/最小計算ではない)を取得するためにデータを集計するSQL文があります。次のスナップは、場所が変更されたときに基づいて特定のIDで取得された移動を計算します。私は、このSQL文の出力を含むビューを作成したいと思いますサブクエリを複数回実行してPostgreSQLビューを作成する
WITH id_locations AS (
SELECT created_at, id, location
FROM locations
WHERE id = 1
), travel_locations AS (
SELECT created_at, id, location, ROW_NUMBER() OVER(ORDER BY created_at) AS row_num
FROM id_locations
WHERE
created_at IN (
SELECT min(created_at)
FROM id_locations
GROUP BY location
) OR created_at IN (
SELECT max(created_at)
FROM id_locations
GROUP BY location
)
)
SELECT a.id id, a.created_at departed_at, b.created_at arrived_at, a.location departure_location, b.location arrival_location
FROM travel_locations AS a
INNER JOIN travel_locations AS b
ON a.row_num = b.row_num - 1
WHERE a.location <> b.location;
Data
id created_at location
1 1 1
1 2 1
1 3 2
1 4 2
1 5 5
1 6 5
1 7 5
1 8 5
2 1 1
2 2 1
2 3 1
2 4 1
2 5 3
2 6 3
2 7 3
2 8 3
Desired Output
id departed_at arrived_at departure_location arrival_location
1 2 3 1 2
1 4 5 2 5
2 4 5 1 3
、ID
でグループ化されたテーブルのすべてのサブセットに走った生のSQLでこれを行うにはどのような方法があり、またはだろう私はいくつかのSQLクライアントで可能なすべてのIDを繰り返し、同じクエリを実行し、将来の参照のためにテーブルに結果を挿入する必要がありますか?私はあなたが取得しようとしている何を参照
独自のIDはありますか? – ekaerovets
あなたは 'group by'を探していると思います。いくつかのサンプルデータと期待される結果を投稿する。 –
いいえ、おそらく例のための最善の列名ではありませんでした。id_groupステートメントは多くの行になります。実行するステートメントでは、1つのidのみを持つサブセットが必要です。 –