PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mendeteksi baris dengan kombinasi angka yang sama di dua kolom pertama, dan memilih yang memiliki angka tertinggi di kolom ketiga

Idenya mirip dengan yang ini . Anda dapat membuat dua kolom tambahan menggunakan pmin sebuah pmax untuk mengelompokkan sebagai berikut:

Sebuah data.table larutan. Tetapi jika Anda tidak menginginkan data.table, maka Anda masih dapat menggunakan ide tersebut. Namun, sangat tidak mungkin Anda mendapatkan solusi data.table lebih cepat dari hanya dengan kode 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. Hubungan banyak-ke-banyak JPA menyebabkan rekursi tak terbatas dan kesalahan stack overflow

  2. LEAST() Fungsi di PostgreSQL

  3. kesalahan pg_restore:peran XXX tidak ada

  4. PG::ForeignKeyViolation:ERROR:perbarui atau hapus pada tabel xxx melanggar batasan kunci asing

  5. Bagaimana cara membandingkan tanggal di bidang datetime di Postgresql?