PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wykrywanie wierszy z tą samą kombinacją liczb w pierwszych dwóch kolumnach i wybieranie tego o najwyższym numerze w trzeciej kolumnie

Pomysł jest podobny do tego . Możesz utworzyć dwie dodatkowe kolumny za pomocą pmin pmax grupować w następujący sposób:

data.table rozwiązanie. Ale jeśli nie chcesz data.table, nadal możesz skorzystać z tego pomysłu. Jednak jest bardzo mało prawdopodobne, że uzyskasz szybsze rozwiązanie niż data.table za pomocą samego kodu R.

# 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Strojenie wydajności Railsów na potrzeby produkcji?

  2. Zduplikowane rekordy w postgresql

  3. Postgresql :błąd składni przy lub w pobliżu -

  4. Jak zaktualizować bazę danych postgresql z 10 do 12 bez utraty danych dla openproject?

  5. Grupuj według skróconej daty w JPA