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

cara menulis kueri sql untuk memilih baris dengan nilai maksimal dalam satu kolom

Persyaratan semacam ini (di mana Anda memerlukan maks atau min menurut satu kolom, dikelompokkan oleh yang lain, tetapi Anda memerlukan semua data dari baris maks atau min) kurang lebih seperti apa fungsi analitik adalah untuk. Saya menggunakan row_number - jika ikatan memungkinkan, Anda perlu mengklarifikasi tugas (lihat Komentar saya di bawah pertanyaan Anda), dan tergantung pada detailnya, fungsi analitik lain mungkin lebih sesuai - mungkin rank() .

with
     my_table ( id, name, ref, dt, frm ) as (
       select 10, 'Ant' , 100, date '2017-02-02', 'David' from dual union all
       select 10, 'Ant' , 300, date '2016-01-01', 'David' from dual union all
       select  2, 'Cat' ,  90, date '2017-09-09', 'David' from dual union all
       select  2, 'Cat' , 500, date '2016-02-03', 'David' from dual union all
       select  3, 'Bird', 150, date '2017-06-28', 'David' from dual
     )
-- End of simulated table (for testing purposes only, not part of the solution).
-- SQL query begins BELOW THIS LINE.
select   id, name, ref, dt, frm
from     (
           select id, name, ref, dt, frm,
                  row_number() over (partition by id order by ref desc, dt desc) as rn
           from   my_table
         )
where    rn = 1
order by dt desc
;

ID  NAME  REF  DT          FRM 
--  ----  ---  ----------  -----
 3  Bird  150  2017-06-28  David
 2  Cat   500  2016-02-03  David
10  Ant   300  2016-01-01  David


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CLOB vs. VARCHAR2 dan apakah ada alternatif lain?

  2. Bagaimana Oracle memproses panggilan fungsi tersimpan dalam SQL?

  3. Cara Mengekspor hasil pernyataan pilih dengan benar ke file Csv menggunakan spool di pengembang Oracle sql

  4. memicu jika lain

  5. Cara menjalankan file skrip .SQL menggunakan c#