PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Phát hiện các hàng có kết hợp số giống nhau trong hai cột đầu tiên và chọn hàng có số cao nhất trong cột thứ ba

Ý tưởng tương tự như ý tưởng này . Bạn có thể tạo thêm hai cột bằng cách sử dụng pmin một pmax thành nhóm như sau:

Một data.table dung dịch. Nhưng nếu bạn không muốn data.table, thì bạn vẫn có thể sử dụng ý tưởng này. Tuy nhiên, rất khó xảy ra khi bạn nhận được nhanh hơn giải pháp data.table chỉ với mã 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. Kết hợp hai cột và thêm vào một cột mới

  2. Docker - Postgres và pgAdmin 4:Kết nối bị từ chối

  3. sqlalchemy đối xứng nhiều thành một tình bạn

  4. nhà cung cấp cho PostgreSQL trong .net với sự hỗ trợ cho TransactionScope

  5. Postgres không sử dụng chỉ mục trên mảng số nguyên nếu phần mở rộng intarray được cài đặt