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

Menggunakan fungsi Max() untuk memilih nilai grup

Beri peringkat catatan dengan ROW_NUMBER, sehingga nilai maksimum untuk sku menjadi #1. Kemudian simpan hanya catatan yang berada di peringkat #1.

select sku, item, value
from
(
  select 
    mytable.*
    row_number() over (partition by sku order by value desc) as rn
  from mytable
)
where rn = 1;

Untuk SKU 1503818 Anda akan mendapatkan salah satu dari dua berikut ini:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

Jika Anda menginginkan yang tertentu (misalnya yang memiliki nomor item lebih tinggi), tambahkan kriteria ini ke klausa ORDER BY Row_Number.

Mengenai kueri yang Anda coba sendiri:Anda seharusnya mencari pasangan nilai-sku sebagai gantinya:

select SKU, ITEM, VALUE from import
where (sku,value) in (select sku, max(value) from import group by sku);

Namun, dalam kasus seri, seperti pada SKU 1503818, kueri ini akan mendapatkan Anda berdua.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-04021:batas waktu terjadi saat menunggu untuk mengunci objek

  2. Bagaimana menjalankan prosedur dengan prosedur DBMS_SCHEDULER.CREATE_JOB

  3. Apakah ada jenis cap waktu modifikasi otomatis untuk kolom Oracle?

  4. Menghapus angka nol di depan dari pengembang varchar sql

  5. Buat Tabel DDL Dengan Jalankan Segera Di Oracle Database Bagian 2