sql >> Database >  >> RDS >> PostgreSQL

Het detecteren van rijen met dezelfde combinatie van nummers in de eerste twee kolommen en het selecteren van de rij met het hoogste nummer in de derde kolom

Het idee is vergelijkbaar met dit . U kunt twee extra kolommen maken met pmin een pmax als volgt groeperen:

Een data.table oplossing. Maar als je data.table niet wilt, dan kun je het idee nog steeds gebruiken. Het is echter zeer onwaarschijnlijk dat u sneller wordt dan de data.table-oplossing met alleen R-code.

# 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


  1. PostgreSQL hernoem kenmerk in jsonb-veld

  2. Hoe MySQL op Debian 8 te installeren

  3. Gebruik mycli en leer MariaDB/MySQL comfortabel in een terminal!

  4. Hoe een Woocommerce Variatie-ID te krijgen?