LIMIT और OFFSET से टॉप N सैलरी निकालना
MySQL में सबसे ज्यादा सैलरी वाले रिकॉर्ड पाने के लिए ORDER BY DESC के साथ LIMIT और OFFSET का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable867(EmployeeSalary INT); INSERT INTO DemoTable867 VALUES(63737); INSERT INTO DemoTable867 VALUES(899833); INSERT INTO DemoTable867 VALUES(23644); INSERT INTO DemoTable867 VALUES(89393); INSERT INTO DemoTable867 VALUES(534333); INSERT INTO DemoTable867 VALUES(889322);
मौजूदा डेटा
+----------------+ | EmployeeSalary | +----------------+ | 63737 | | 899833 | | 23644 | | 89393 | | 534333 | | 889322 | +----------------+
पहली सबसे ज्यादा सैलरी
SELECT DISTINCT EmployeeSalary FROM DemoTable867 ORDER BY EmployeeSalary DESC LIMIT 1;
+----------------+ | EmployeeSalary | +----------------+ | 899833 | +----------------+
दूसरी सबसे ज्यादा सैलरी
SELECT DISTINCT EmployeeSalary FROM DemoTable867 ORDER BY EmployeeSalary DESC LIMIT 1 OFFSET 1;
+----------------+ | EmployeeSalary | +----------------+ | 889322 | +----------------+
तीसरी सबसे ज्यादा सैलरी
SELECT DISTINCT EmployeeSalary FROM DemoTable867 ORDER BY EmployeeSalary DESC LIMIT 1 OFFSET 2;
+----------------+ | EmployeeSalary | +----------------+ | 534333 | +----------------+
एक ही क्वेरी में टॉप 3
SELECT DISTINCT EmployeeSalary FROM DemoTable867 ORDER BY EmployeeSalary DESC LIMIT 3;
+----------------+ | EmployeeSalary | +----------------+ | 899833 | | 889322 | | 534333 | +----------------+
महत्वपूर्ण नोट्स
DISTINCTडुप्लीकेट सैलरी को एक ही मानता हैOFFSET 0पहला रिकॉर्ड होता है (डिफॉल्ट)- बड़े डेटासेट में OFFSET धीमा हो सकता है; सबक्वेरी या विंडो फंक्शन (MySQL 8.0+) बेहतर हैं
- एम्प्लॉई डिटेल्स के लिए जॉइन या सबक्वेरी का उपयोग करें
एम्प्लॉई नाम सहित (सबक्वेरी)
SELECT e.Name, e.Salary
FROM Employees e
WHERE e.Salary IN (
SELECT DISTINCT Salary
FROM Employees
ORDER BY Salary DESC
LIMIT 3
)
ORDER BY e.Salary DESC;