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

Oracle SQL में समय के आधार पर आइटम्स द्वारा कुल ओवर रिपीटिंग ग्रुप चलाना

आप जिस राशि की तलाश कर रहे हैं उसे प्राप्त करने के लिए आपको उन मानों को समूहबद्ध करने के तरीके की आवश्यकता है जिनमें आप रुचि रखते हैं। आप कुछ ROW_NUMBER का उपयोग करके एक समूह आईडी उत्पन्न कर सकते हैं। विश्लेषणात्मक कार्य, एक कुंजी मान द्वारा विभाजित। हालांकि KEY . को डुप्लिकेट करने की आपकी आवश्यकता के कारण स्तंभ मान इसे दो चरणों में करने की आवश्यकता होगी:

WITH t1 AS (
  SELECT dta.*
       , last_value(KEY IGNORE NULLS)          -- Fill in the missing
               OVER (ORDER BY TIME ASC) key2   -- key values
    FROM your_data dta
), t2 AS (
  SELECT t1.*
       , row_number() OVER (ORDER BY TIME)     -- Generate a
       - row_number() OVER (PARTITION BY key2  -- grouping ID
                                ORDER BY TIME) gp
    FROM t1
)
SELECT t2.*
     , sum(amt) OVER (PARTITION BY gp, key2
                          ORDER BY TIME) running_sums
  FROM t2;

उपरोक्त क्वेरी AMT का एक रनिंग योग बनाती है जो हर बार कुंजी मान बदलने पर पुनरारंभ होता है। जबकि ऊपर दिए गए अंतिम चयन कथन के स्थान पर उपयोग की गई निम्न क्वेरी अनुरोधित परिणाम देती है, जिसे मैं एक चालू योग नहीं कहूंगा।

SELECT key2
     , MIN(TIME) start_time
     , MAX(TIME) stop_time
     , sum(amt) amt
  FROM t2
 GROUP BY key2, gp;

पूर्णकालिक मान देखने के लिए आप या तो अपना सत्र बदलना चाहेंगे NLS_DATE_FORMAT नीचे के रूप में:

ALTER SESSION SET NLS_DATE_FORMAT='DD-MM-RRRR HH24:MI:SS';

या प्रत्येक दिनांक कॉलम को TO_CHAR . में लपेटें आउटपुट उद्देश्यों के लिए कार्य करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MacOS पर Oracle SQLDeveloper सही Java की स्थापना के बाद नहीं खुलेगा

  2. पिछले रिकॉर्ड की जानकारी कैसे प्राप्त करें

  3. PLSQL गतिशील क्वेरी

  4. Oracle तालिका में प्रति समूह अधिकतम x पंक्तियाँ रखने के लिए पंक्तियाँ हटाएं

  5. Oracle के साथ काम करते समय Fluent NHibernate के साथ बैच लाने को कैसे कार्यान्वित करें?