मुझे ओरेकल में एक SQL स्टेटमेंट के साथ एक बड़ी समस्या है। मैं STORAGE_DB द्वारा आदेशित शीर्ष 10 रिकॉर्ड्स का चयन करना चाहता हूं जो किसी अन्य चयन कथन से सूची में नहीं हैं।ओरेकल चयन शीर्ष 10 रिकॉर्ड
यह एक सभी रिकॉर्ड के लिए ठीक काम करता है:
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')
लेकिन जब मैं
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
द्वारा जोड़ा जा रहा मैं "यादृच्छिक" रिकॉर्ड्स के कुछ प्रकार हो रही है। मुझे लगता है क्योंकि आदेश से पहले सीमा तय होती है।
क्या किसी के पास कोई अच्छा समाधान है? दूसरी समस्या: इस क्वेरी वास्तव में धीमी है (10k + रिकॉर्ड)
संभावित डुप्लिकेट: http://stackoverflow.com/questions/2306744/oracle-sql-how-to-retrieve-highest-5-values-of-a-column – APC