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

Oracle में शीर्ष 100 पंक्तियों का चयन कैसे करें?

यह मानते हुए कि create_time में ऑर्डर बनाने का समय शामिल है, और आप चाहते हैं कि 100 क्लाइंट नवीनतम ऑर्डर के साथ हों, आप यह कर सकते हैं:

  • अपनी अंतरतम क्वेरी में create_time जोड़ें
  • अपनी बाहरी क्वेरी के परिणामों को create_time desc . द्वारा क्रमित करें
  • एक बाहरीतम क्वेरी जोड़ें जो ROWNUM . का उपयोग करके पहली 100 पंक्तियों को फ़िल्टर करती है

प्रश्न:

  SELECT * FROM (
     SELECT * FROM (
        SELECT 
          id, 
          client_id, 
          create_time,
          ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn 
        FROM order
      ) 
      WHERE rn=1
      ORDER BY create_time desc
  ) WHERE rownum <= 100

Oracle 12c के लिए अद्यतन करें

रिलीज़ 12.1 के साथ, Oracle ने "असली" टॉप-एन क्वेरीज़ पेश कीं। . नए FETCH FIRST... . का उपयोग करना सिंटैक्स, आप इसका भी उपयोग कर सकते हैं:

  SELECT * FROM (
    SELECT 
      id, 
      client_id, 
      create_time,
      ROW_NUMBER() OVER(PARTITION BY client_id ORDER BY create_time DESC) rn 
    FROM order
  ) 
  WHERE rn = 1
  ORDER BY create_time desc
  FETCH FIRST 100 ROWS ONLY)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट @OneToMany स्पष्ट रूप से तालिका इकाई में कहां क्लॉज जोड़ें?

  2. ओरेकल रैंक के बराबर MySQL ()

  3. महीने के हिसाब से दो तिथियों के बीच के अंतराल को विवरण में कैसे विभाजित करें?

  4. ग्रिडव्यू में Oracle डेटाबेस तालिका

  5. Oracle JDBC प्रीफ़ेच:RAM से बाहर निकलने से कैसे बचें/ओरेकल को तेज़ उच्च विलंबता कैसे बनाएं?