उसी प्रभाव को Oracle में first_value()
. का उपयोग करके दोहराया जा सकता है फ़ंक्शन या rank()
. में से किसी एक का उपयोग करके या row_number()
कार्य।
दोनों वेरिएंट पोस्टग्रेज में भी काम करते हैं।
first_value()
select distinct col1,
first_value(col2) over (partition by col1 order by col2 asc)
from tmp
first_value
विभाजन के लिए पहला मान देता है, लेकिन इसे प्रत्येक पंक्ति के लिए दोहराता है, इसलिए इसे distinct
के संयोजन में उपयोग करना आवश्यक है प्रत्येक विभाजन के लिए एक पंक्ति प्राप्त करने के लिए।
row_number()
/ rank()
select col1, col2 from (
select col1, col2,
row_number() over (partition by col1 order by col2 asc) as rownumber
from tmp
) foo
where rownumber = 1
row_number()
की जगह rank()
के साथ इस उदाहरण में वही परिणाम मिलता है।
इस संस्करण की एक विशेषता यह है कि इसका उपयोग पहला N . लाने के लिए किया जा सकता है केवल rownumber = 1
को बदलकर किसी दिए गए विभाजन के लिए पंक्तियाँ (जैसे "अंतिम 3 अद्यतन") करने के लिए rownumber <= N
।