Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle CHỌN 10 bản ghi hàng đầu

Bạn sẽ cần đặt truy vấn hiện tại của mình vào truy vấn con như sau:

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

Oracle áp dụng rownum cho kết quả sau khi nó được trả về.
Bạn cần lọc kết quả sau khi nó được trả về, vì vậy cần có một truy vấn con. Bạn cũng có thể sử dụng hàm RANK () để nhận kết quả Top-N.

Để biết hiệu suất, hãy thử sử dụng NOT EXISTS thay cho NOT IN . Xem cái này để biết thêm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi không hiểu đối chiếu? (Mysql, RDBMS, Bộ ký tự)

  2. Máy khách Oracle ORA-12541:TNS:không có người nghe

  3. ORA-04021:xảy ra thời gian chờ trong khi chờ khóa đối tượng

  4. Nhận Giờ địa phương hiện tại của bất kỳ quốc gia nào trong PL / SQL

  5. Làm cách nào để chuyển động các giá trị cho toán tử IN?