Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih 10 Rekod Oracle Teratas Menggunakan Subkueri dan Penapisan?

Bagaimana untuk Memilih 10 Rekod Oracle Teratas Menggunakan Subkueri dan Penapisan?

Barbara Streisand
Barbara Streisandasal
2025-01-18 15:51:09641semak imbas

How to Select the Top 10 Oracle Records Using a Subquery and Filtering?

Pilih 10 rekod teratas dalam Oracle menggunakan subkueri dan penapisan

Dalam pangkalan data Oracle, anda boleh menggunakan teknik subkueri dan penapisan untuk memilih 10 rekod teratas yang diisih mengikut lajur tertentu. Pertanyaan yang asalnya digunakan untuk memilih semua rekod yang sepadan boleh diubah suai untuk memasukkan keperluan ini.

Untuk menyelesaikan masalah mengembalikan rekod "rawak", anda boleh menggunakan klausa ROWNUM (iaitu bersamaan Oracle bagi klausa LIMIT).

Pertanyaan yang diubah suai:

<code class="language-sql">SELECT * 
FROM 
(
  SELECT DISTINCT 
    APP_ID, 
    NAME, 
    STORAGE_GB, 
    HISTORY_CREATED, 
    TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
  FROM HISTORY 
  WHERE 
    STORAGE_GB IS NOT NULL AND 
    APP_ID NOT IN (
      SELECT APP_ID 
      FROM HISTORY 
      WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009'
    )
  ORDER BY 
    STORAGE_GB DESC 
) 
WHERE 
  ROWNUM <= 10;</code>

Pertanyaan ini mula-mula menggunakan subkueri untuk mendapatkan semula rekod yang sepadan. Ia kemudian menggunakan klausa ROWNUM untuk memilih 10 rekod teratas daripada set data yang terhasil berdasarkan kriteria pengisihan.

Nota Prestasi:

Jika prestasi pertanyaan lambat semasa memproses set data yang besar, pertimbangkan untuk menggunakan NOT EXISTS dan bukannya NOT IN untuk predikat subquery. NOT EXISTS mungkin lebih cekap apabila subquery mengandungi sejumlah besar rekod.

Atas ialah kandungan terperinci Bagaimana untuk Memilih 10 Rekod Oracle Teratas Menggunakan Subkueri dan Penapisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn