Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kembalikan baris dengan nilai maksimal satu kolom per grup

Ini juga dimungkinkan tanpa subquery:

SELECT DISTINCT
       id
      ,max(round) OVER (PARTITION BY id) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

Mengembalikan persis seperti yang Anda minta.
Intinya adalah DISTINCT diterapkan setelah fungsi jendela.

SQL Fiddle.

Mungkin lebih cepat karena menggunakan jendela yang sama dua kali:

SELECT DISTINCT
       id
      ,first_value(round) OVER (PARTITION BY id ORDER BY round DESC) AS round
      ,first_value(score) OVER (PARTITION BY id ORDER BY round DESC) AS score
FROM   SCORES
WHERE  id IN (1,2,3)
ORDER  BY id;

Jika tidak, lakukan hal yang sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara memasukkan tanggal dan waktu di oracle?

  2. Bagaimana cara membuat urutan Oracle yang dimulai dengan nilai maksimal dari sebuah tabel?

  3. 7 hal yang perlu diketahui tentang kompartemen di Oracle Cloud Infrastructure

  4. Memutar baris menjadi kolom secara dinamis di Oracle

  5. Bagaimana cara memilih penyedia Oracle untuk aplikasi .Net?