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

Bagaimana cara memilih 100 baris teratas di Oracle?

Dengan asumsi create_time berisi waktu pesanan dibuat, dan Anda menginginkan 100 klien dengan pesanan terbaru, Anda dapat:

  • tambahkan create_time dalam kueri terdalam Anda
  • urutkan hasil kueri luar Anda dengan create_time desc
  • tambahkan kueri terluar yang memfilter 100 baris pertama menggunakan ROWNUM

Pertanyaan:

  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

PERBARUI untuk Oracle 12c

Dengan rilis 12.1, Oracle memperkenalkan kueri Top-N "nyata" . Menggunakan FETCH FIRST... yang baru sintaks, Anda juga dapat menggunakan:

  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. Pendengar Oracle tidak berjalan dan tidak mau mulai

  2. Hibernate @OrderBy dengan kelas yang direferensikan

  3. untuk apa oci_bind_by_name?

  4. Ambil gambar dari Oracle DB

  5. Nilai SQL MIN dari dua tabel