sql >> Databasteknik >  >> RDS >> PostgreSQL

Upptäcka rader med samma kombination av siffror i de två första kolumnerna och välja den med högst nummer i den tredje kolumnen

Idén liknar den här . Du kan skapa ytterligare två kolumner med pmin en pmax att gruppera enligt följande:

En data.table lösning. Men om du inte vill ha data.table kan du fortfarande använda idén. Det är dock högst osannolikt att du får snabbare än data.table-lösning med bara R-kod.

# 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. Välj rader som kolumner för wordpress post meta

  2. Unicode SQL Query W/ Parameter istället N Prefix

  3. Mallmönster och modifierare för formatering av datum/tid i PostgreSQL

  4. Hur man kombinerar datum från ett fält med tid från ett annat fält - MS SQL Server