Ich habe durch einige relevante Verschmelzen Fragen gegangen, aber mein Problem ist, aus den bestehenden etwas anders. Ich habe eine Tabelle in meiner PostgreSQL 9.5-Datenbank, die vier Spalten enthält, d. H. Segment (eindeutige Gruppe), Höhe (numerisch), Untergrenze (numerisch) und Obergrenze (numerisch). Die Beispieldaten sind wie folgt:Wie kann ich Zeilen basierend auf Zeilenunterschieden in PostgreSQL bedingt zusammenführen?
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
Ich muss Zeilen basierend auf dem Unterschied der Höhe Werte bedingt zusammenführen. Ich würde versuchen, in Schritten zu erklären:
- Ausgehend von der ersten Höhe, ob die Differenz zwischen dem vorhergehenden und dem Zeilenfolgenden weniger oder gleich 1
- Wenn Bedingung der Zeilen mit Untergrenze der ersten Reihe erfüllt fusionieren und die obere Grenze der fusionierten Reihe
- , wenn alle Zeilen in einer Gruppe zusammengefasst werden dann wählen Sie die am häufigsten Höhe mit Untergrenze der ersten und obere Grenze der letzten fusionierten Reihe
wiederholen dies für andere Gruppen
Basierend o n oben könnte die gewünschte Ausgabe wie:
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
Kann jemand mir helfen, so dass ich bedingt Zeilen basierend auf Höhendifferenzwert verschmelzen könnte?
gibt es eine Spalte die Reihenfolge angeben können? –
Ich habe am Ende des Codes eine Bestellung von grp line hinzugefügt. Ich bekomme 5 Zeilen entsprechend der gewünschten Ausgabe, aber auf diese Weise: C, A, B, C, C. Bitte sehen Sie die gewünschte Ausgabe. –
Reihenfolge hinzufügen durch 'segment, grp' –