PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Откриване на редове с една и съща комбинация от числа в първите две колони и избиране на този с най-висок номер в третата колона

Идеята е подобна на тази . Можете да създадете две допълнителни колони, като използвате pmin pmax за групиране, както следва:

data.table решение. Но ако не искате data.table, все пак можете да използвате идеята. Въпреки това е много малко вероятно да получите по-бързо решение от data.table само с 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. Трябва ли да използвам hstore в обновен модел на данни?

  2. не може да рестартира postgre на mac os x

  3. Как да инсталирам libpq-fe.h?

  4. Postgres проектиран ли е да пише в споделени хранилища за данни?

  5. Извличане на секунди от таблицата с интервали / Прехвърляне на запис към интервал?