私はいくつかの関連する合併問題を抱えていますが、私の問題は既存の問題と若干異なります。私は、セグメント(一意のグループ)、高さ(数値)、lower_limit(数値)、upper_limit(数値)の4つの列を含むPostgreSQL 9.5データベースのテーブルを持っています。サンプルデータは次のとおりです。PostgreSQLの行の違いに基づいて行を条件付きでマージするにはどうすればよいですか?
Segment height lower_limit upper_limit
A 19.3 112 142
A 19.3 142 172
A 20.3 172 202
A 20.3 202 232
A 19.3 232 262
A 19.3 262 292
B 22.1 203 233
B 22.1 233 263
B 22.1 263 293
B 22.1 293 323
B 22.1 323 353
B 22.1 353 383
C 18.9 136 166
C 18.9 166 196
C 18.9 196 226
C 27.1 286 316
C 27.1 316 346
C 6.5 346 376
C 6.5 376 406
高さの差に基づいて行を条件付きでマージする必要があります。私はステップで説明しようとする第一の高さから開始
- 、行の前後の差が小さいか1
- に等しい場合、条件満足が最初の行の下限とこれらの行をマージするかどうかを確認しますマージされた行の上限
- すべての行がグループにマージされるならば、最も一般的な高さを選択し、最後のマージされた行の最初及び上限の下限と
リピートこの他のグループのため
基づきO私は条件付きで高さの差値に基づいて行をマージすることができるように誰かが私を助けることができる
Segment height lower_limit upper_limit A 19.3 112 292 B 22.1 203 383 C 18.9 136 226 C 27.1 286 346 C 6.5 346 406
:nは上記の、所望の出力は次のようになるだろうか?
使用することができます発注のために使用することができますか? –
コードの最後にgrp行を追加しました。私は希望の出力に応じて5行を得ていますが、この方法では:C、A、B、C、C希望の出力を見てください。 –
'segment、grp 'による注文の追加 –