मैंने ओरेकल के साथ एक जटिल SQL क्वेरी लिखा है जिसमें मैं एक ही विभाजन पर दो विश्लेषणात्मक फ़ंक्शन का उपयोग करना चाहता हूं।ओरेकल विश्लेषणात्मक कार्य - खंड द्वारा किसी पक्ष का पुन: उपयोग कैसे करें?
के बहुत ज्यादा काफी सरल लेकिन नहीं हो:
SELECT col1,
MAX(col2) OVER(PARTITION BY col3, col4, col5, col6,
CASE WHEN col7 LIKE 'foo'
THEN SUBSTR(col7,1,5)
ELSE col7
END
ORDER BY col5 ASC, col6 DESC),
MIN(col2) OVER(PARTITION BY col3, col4, col5, col6,
CASE WHEN col7 LIKE 'foo'
THEN SUBSTR(col7,1,5)
ELSE col7
END
ORDER BY col5 ASC, col6 DESC)
FROM my_table;
वहाँ PARTITION BY
खंड बाँटे के लिए एक और अधिक सुरुचिपूर्ण वाक्य रचना है?
धन्यवाद।
ध्यान में रखते हुए कि आप जिन फ़ंक्शंस का उपयोग कर रहे हैं वे 'MAX' और' MIN' हैं और 'col5' और 'col6'' विभाजन' में हैं और 'ऑर्डर बाय' हैं, प्रत्येक कॉलम के लिए 'ऑर्डर बाय' क्लॉज दिखाई देता है अनावश्यक होना –
आप सही हैं लेकिन यह एक साधारण उदाहरण के रूप में था, यह LAST_VALUE या कोई अन्य विश्लेषणात्मक हो सकता है। – Benoit
संभावित डुप्लिकेट [उसी विभाजन पर एकाधिक विंडो फ़ंक्शंस को लागू करना] (http://stackoverflow.com/questions/1896102/applying-multiple- विन्डो- फ़ंक्शन-ऑन- समान- विभाजन)। यह डुप्लिकेट ढूंढना आसान नहीं था। – Benoit