Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:Saya perlu memilih n baris dari setiap k baris tabel

Dengan asumsi Anda memesannya 1 - 10000 menggunakan beberapa logika dan hanya ingin menampilkan baris 1-100,2001-2100,4001-4100,etc maka Anda dapat menggunakan ROWNUM kolom semu:

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.

Atau Anda bisa menggunakan ROW_NUMBER() fungsi analitik:

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

Ganti WHERE klausa dengan:

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. masalah rownum dalam kueri Oracle

  2. Bagi alamat IPv4 menjadi 4 angka di Oracle sql

  3. Oracle sql mengembalikan true jika ada pertanyaan

  4. Pindahkan data dari oracle ke HDFS, proses dan pindahkan ke Teradata dari HDFS

  5. Jaring Pengaman