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

पोस्टग्रेज के DISTINCT के बराबर Oracle?

उसी प्रभाव को 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि मान मौजूद नहीं है - postgresql INSERT INTO समस्या

  2. खाली या शून्य मान की जांच करने का सबसे अच्छा तरीका

  3. कैसे कोट () PostgreSQL में काम करता है

  4. PSQL में DECIMAL और NUMERIC डेटाटाइप के बीच अंतर

  5. पोस्टग्रेएसक्यूएल में एसयूएम () फ़ंक्शन