Tôi có một vấn đề lớn với một câu lệnh SQL trong Oracle. Tôi muốn chọn TOP 10 Records do STORAGE_DB đặt hàng không có trong danh sách từ một câu lệnh chọn khác.Oracle SELECT TOP 10 hồ sơ
một này làm việc tốt cho tất cả hồ sơ:
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')
Nhưng khi tôi thêm
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
tôi nhận được một số loại hồ sơ "ngẫu nhiên". Tôi nghĩ bởi vì giới hạn sẽ diễn ra trước khi đặt hàng.
Có ai đó có giải pháp tốt không? Các vấn đề khác: Truy vấn này là thực sự chậm (10k + hồ sơ)
Sao chép có thể xảy ra: http://stackoverflow.com/questions/2306744/oracle-sql-how-to-retrieve-highest-5-values-of-a-column – APC