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

समूह मूल्यों का चयन करने के लिए मैक्स () फ़ंक्शन का उपयोग करना

रिकॉर्ड को ROW_NUMBER के साथ रैंक करें, ताकि किसी स्कू के लिए अधिकतम मान #1 हो जाए। फिर केवल उन्हीं रिकॉर्ड्स को #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;

SKU 1503818 के लिए आपको इन दोनों में से कोई एक मिलेगा:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

यदि आप एक विशेष चाहते हैं (उदाहरण के लिए उच्च आइटम नंबर वाला) तो इस मानदंड को Row_Number के ORDER BY क्लॉज में जोड़ें।

प्रश्न के रूप में आपने स्वयं प्रयास किया:आपको इसके बजाय sku-value जोड़े की तलाश करनी चाहिए:

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

एक टाई के मामले में, जैसा कि एसकेयू 1503818 के साथ है, यह क्वेरी आपको दोनों रिकॉर्ड प्राप्त करेगी।



  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 SQL:कॉलम की अनुमति नहीं है

  2. Oracle के लिए sql इन्सर्ट जनरेट करना

  3. Oracle में RR बनाम YY

  4. .अगला JDBC डालने की समस्या

  5. स्तंभों की अनिश्चित संख्या पर UNPIVOT