आप जिस राशि की तलाश कर रहे हैं उसे प्राप्त करने के लिए आपको उन मानों को समूहबद्ध करने के तरीके की आवश्यकता है जिनमें आप रुचि रखते हैं। आप कुछ 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
. में लपेटें आउटपुट उद्देश्यों के लिए कार्य करता है।