MySQL में अधिकतम और न्यूनतम वेतन वाली पंक्तियों को एक साथ चुनने के लिए, सबक्वेरी के साथ MIN(), MAX() और UNION ALL का उपयोग करें।
टेबल बनाएं:
mysql> create table DemoTable (
-> EmployeeName VARCHAR(20),
-> EmployeeSalary INT
-> );
Query OK, 0 rows affected (0.70 sec)
रिकॉर्ड इन्सर्ट करें:
mysql> insert into DemoTable values('Bob',8800);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Chris',9800);
Query OK, 1 row affected (0.63 sec)
mysql> insert into DemoTable values('David',7600);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Sam',9600);
Query OK, 1 row affected (0.14 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable;
+--------------+----------------+ | EmployeeName | EmployeeSalary | +--------------+----------------+ | Bob | 8800 | | Chris | 9800 | | David | 7600 | | Sam | 9600 | +--------------+----------------+ 4 rows in set (0.00 sec)
न्यूनतम और अधिकतम वेतन वाली पंक्तियाँ चुनने के लिए क्वेरी:
mysql> select * from DemoTable
-> where EmployeeSalary IN (
-> SELECT MAX(EmployeeSalary) FROM DemoTable
-> UNION ALL
-> SELECT MIN(EmployeeSalary) FROM DemoTable
-> );
परिणाम:
+--------------+----------------+ | EmployeeName | EmployeeSalary | +--------------+----------------+ | Chris | 9800 | | David | 7600 | +--------------+----------------+ 2 rows in set (0.05 sec)
व्याख्या
- MAX(EmployeeSalary) - अधिकतम वेतन (9800) लौटाता है।
- MIN(EmployeeSalary) - न्यूनतम वेतन (7600) लौटाता है।
- UNION ALL - दोनों परिणामों को जोड़ता है (डुप्लिकेट नहीं हटाता)।
- IN क्लॉज - मुख्य क्वेरी उन वेतन वाली पंक्तियाँ चुनती है।
वैकल्पिक दृष्टिकोण (MySQL 8.0+)
विंडो फंक्शन का उपयोग करके:
WITH Ranked AS (
SELECT *,
ROW_NUMBER() OVER (ORDER BY EmployeeSalary ASC) AS rn_min,
ROW_NUMBER() OVER (ORDER BY EmployeeSalary DESC) AS rn_max
FROM DemoTable
)
SELECT EmployeeName, EmployeeSalary
FROM Ranked
WHERE rn_min = 1 OR rn_max = 1;
नोट
यदि कई कर्मचारियों का समान अधिकतम/न्यूनतम वेतन हो, तो यह क्वेरी उन सभी को लौटाएगी।