LIMIT और OFFSET के साथ nth उच्चतम मान प्राप्त करना
कॉलम में nth उच्चतम मान प्राप्त करने के लिए LIMIT ... OFFSET का उपयोग करें। OFFSET का उपयोग मानों को छोड़ने (स्किप) के लिए किया जाता है।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Value INT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (100); mysql> INSERT INTO DemoTable VALUES (140); mysql> INSERT INTO DemoTable VALUES (90); mysql> INSERT INTO DemoTable VALUES (80); mysql> INSERT INTO DemoTable VALUES (89); mysql> INSERT INTO DemoTable VALUES (98); mysql> INSERT INTO DemoTable VALUES (58);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-------+ | Value | +-------+ | 100 | | 140 | | 90 | | 80 | | 89 | | 98 | | 58 | +-------+
कॉलम में nth उच्चतम मान प्राप्त करने के लिए क्वेरी। यहां हम OFFSET 3 का उपयोग करके 3 मानों को छोड़ रहे हैं। ORDER BY के साथ यह 4था उच्चतम मान देता है:
mysql> SELECT Value FROM DemoTable
ORDER BY Value DESC
LIMIT 1 OFFSET 3;
आउटपुट:
+-------+ | Value | +-------+ | 90 | +-------+
व्याख्या:
ORDER BY Value DESCमानों को डिसेंडिंग ऑर्डर में सॉर्ट करता है: 140, 100, 98, 90, 89, 80, 58OFFSET 3पहले 3 मानों (140, 100, 98) को छोड़ देता हैLIMIT 1अगला 1 मान (90) लेता है- परिणाम: 4था उच्चतम मान = 90
सामान्य सूत्र: Nth उच्चतम मान के लिए: LIMIT 1 OFFSET N-1
- 1st उच्चतम: LIMIT 1 OFFSET 0 (या केवल LIMIT 1)
- 2nd उच्चतम: LIMIT 1 OFFSET 1
- 3rd उच्चतम: LIMIT 1 OFFSET 2
- Nth उच्चतम: LIMIT 1 OFFSET N-1
नोट: यदि डुप्लिकेट मान हैं और आप डिस्टिंक्ट nth उच्चतम चाहते हैं, तो SELECT DISTINCT Value ... का उपयोग करें।