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

Oracle में उच्चतम मूल्य के साथ रिकॉर्ड कैसे प्रदर्शित करें?

कभी-कभी ORA-00907: missing right parenthesis इसका मतलब ठीक यही है:हमारे पास एक मिलान करने वाला दायां ब्रैकेट है। लेकिन इसे एक वाक्य रचना त्रुटि द्वारा कोष्ठक से बंधे हुए कथन के एक भाग में भी फेंका जा सकता है।

यह यहाँ दूसरा कारण है:LIMIT एक Mysql कमांड है जिसे Oracle नहीं पहचानता है। आप यहां विश्लेषणात्मक फ़ंक्शन का उपयोग कर सकते हैं:

SELECT A1.artistid, A1.firstname, TEMP1.avgProfit
FROM 
(
    select  artistid
            , avgProfit
            , rank() over (order by avgProfit desc) as rnk
    from (
        SELECT 
            AVG(salesPrice - AcquisitionPrice) as avgProfit, 
            W1.artistid as artistid
        FROM dtoohey.trans T1
        INNER JOIN dtoohey.WORK W1
        ON W1.workid = T1.workid
        GROUP BY artistid
    ) 
) TEMP1
INNER JOIN dtoohey.artist A1
    ON A1.artisid = TEMP1.artistid
where TEMP1.rnk = 1

यह रैंक () फ़ंक्शन का उपयोग करता है जो एक से अधिक पंक्तियों को वापस कर देगा यदि कई कलाकार समान औसत लाभ प्राप्त करते हैं। आप इसके बजाय ROW_NUMBER() का उपयोग करना चाह सकते हैं। विश्लेषणात्मक कार्य बहुत शक्तिशाली हो सकते हैं। और जानें

आप किसी भी शीर्ष-n पर ROWN_NUMBER(), RANK() और DENSE_RANK() लागू कर सकते हैं संकट। आप उनमें से किसी एक का उपयोग अपनी पहली समस्या को हल करने के लिए भी कर सकते हैं।

यह शायद एक डेटा मुद्दा है। अगर (salesPrice - AcquisitionPrice) . में से कोई एक नंबर शून्य है, परिणाम शून्य होगा, और औसत में शामिल नहीं किया जाएगा। यदि किसी कलाकार के लिए सभी पंक्तियाँ शून्य हैं, तो AVG () शून्य होगी।

जैसा कि होता है सॉर्ट ऑर्डर NULL को अंतिम रूप देगा। लेकिन जैसा कि पार्टिशन बाय क्लॉज AvgProfit desc के अनुसार सॉर्ट करता है जो NULL परिणामों को रैंक 1 पर रखता है। समाधान विंडोिंग क्लॉज में NULLS LAST का उपयोग करना है:

            , rank() over (order by avgProfit desc nulls last) as rnk

यह आपको शीर्ष पर एक गैर-शून्य परिणाम की गारंटी देगा (बशर्ते आपके कम से कम एक कलाकार के दोनों कॉलम में मान हों)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. odp.net डीबी अधिसूचना बदलें

  2. Excel दिनांक संख्या को Oracle दिनांक में बदलें

  3. CURSOR और REF CURSOR एक JDBC डेटा प्रकार के रूप में

  4. ओरेकल एलियासिंग को समझना - किसी अन्य क्वेरी में लपेटे जाने तक किसी अन्य प्रश्न में उपनाम क्यों नहीं पहचाना जाता है?

  5. Oracle एक दृश्य में सभी स्तंभों के लिए तारांकन को प्रतिस्थापित करता है