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

Oracle:मुझे किसी तालिका की प्रत्येक k पंक्तियों से n पंक्तियों का चयन करने की आवश्यकता है

मान लें कि आप उन्हें ऑर्डर कर रहे हैं 1 - 10000 कुछ तर्क का उपयोग करके और केवल पंक्तियों को आउटपुट करना चाहते हैं 1-100,2001-2100,4001-4100,etc तो आप ROWNUM . का उपयोग कर सकते हैं स्यूडोकॉलम:

SELECT *
FROM   (
  SELECT t.*,
         ROWNUM AS rn            -- Secondly, assign a row number to the ordered rows
  FROM   (
    SELECT *
    FROM   your_table
    ORDER BY your_condition      -- First, order the data
  ) t
)
WHERE MOD( rn - 1, 2000 ) < 100; -- Finally, filter the top 100 per 2000.

या आप ROW_NUMBER() . का उपयोग कर सकते हैं विश्लेषणात्मक कार्य:

SELECT *
FROM   (
  SELECT t.*,
         ROW_NUMBER() OVER ( ORDER BY your_condition ) AS rn
  FROM   your_table
)
WHERE  MOD( rn - 1, 2000 ) < 100;

WHERE बदलें इसके साथ खंड:

WHERE rn - POWER(
             2,
             TRUNC( CAST( LOG( 2, CEIL( rn / 1000 ) ) AS NUMBER(20,4) ) )
           ) * 1000 + 1000 <= 100


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SYS_GUID नहीं बदलता है

  2. Oracle में गतिरोध का इतिहास?

  3. utl फ़ाइल का नाम बदलने का कार्य विफल रहा

  4. ORA-00900:अमान्य SQL कथन त्रुटि? मेरे sql में क्या गलत है?

  5. callableStatement.registerOutParameter(1, java.sql.Types.BOOLEAN) को कैसे हैंडल करें;