PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ermitteln von Zeilen mit der gleichen Zahlenkombination in den ersten beiden Spalten und Auswählen der Zeile mit der höchsten Zahl in der dritten Spalte

Die Idee ist ähnlich wie diese . Sie können zwei zusätzliche Spalten mit pmin erstellen ein pmax wie folgt zu gruppieren:

Eine data.table Lösung. Aber wenn Sie data.table nicht wollen, dann können Sie die Idee trotzdem verwenden. Es ist jedoch höchst unwahrscheinlich, dass Sie mit nur R-Code schneller als die data.table-Lösung werden.

# assuming your data.frame is DF
require(data.table)
DT <- data.table(DF)
# get min of V1,V2 on one column and max on other (for grouping)
DT[, `:=`(id1=pmin(V1, V2), id2=pmax(V1, V2))]
# get max of V3
DT.OUT <- DT[, .SD[which.max(V3), ], by=list(id1, id2)]
# remove the id1 and id2 columns
DT.OUT[, c("id1", "id2") := NULL]

#     V1  V2     V3
# 1:   2   1    666
# 2: 100 102  23131
# 3:  10  19 124444
# 4:  10  15   1244
# 5: 100 110     23