Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

एक कॉलम में अधिकतम मान वाली पंक्तियों का चयन करने के लिए sql क्वेरी कैसे लिखें?

इस तरह की आवश्यकता (जहां आपको एक कॉलम द्वारा अधिकतम या न्यूनतम की आवश्यकता होती है, दूसरे द्वारा समूहीकृत, लेकिन आपको अधिकतम या न्यूनतम पंक्ति से सभी डेटा की आवश्यकता होती है) विश्लेषणात्मक कार्य बहुत अधिक है इसलिए है। मैंने row_number . का उपयोग किया है - यदि संबंध संभव हैं, तो आपको असाइनमेंट को स्पष्ट करने की आवश्यकता है (अपने प्रश्न के तहत मेरी टिप्पणी देखें), और विवरण के आधार पर, एक और विश्लेषणात्मक कार्य अधिक उपयुक्त हो सकता है - शायद 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. क्या Oracle pl sql का उपयोग करके http अनुरोध के लिए utl_http पैकेज का कोई विकल्प है?

  2. पीएल/एसक्यूएल के साथ कॉलम के माध्यम से कैसे लूप करें

  3. कैसे (इकाई-) डेटा गहन पीएल/एसक्यूएल एप्लिकेशन का परीक्षण करें

  4. Oracle में दो टाइमस्टैम्प के बीच अंतर की गणना कैसे करें

  5. डायनेमिक SQL - सिंटैक्स और शब्दार्थ की जाँच करें