MySQL में MAX() और GROUP BY का उपयोग करके प्रत्येक छात्र के लिए एकाधिक अंक कॉलम में से अधिकतम मान प्राप्त किया जा सकता है।
उदाहरण
तालिका बनाएं:
mysql> CREATE TABLE DemoTable (
->> StudentEmailId VARCHAR(20), Marks1 INT, Marks2 INT
->> );
mysql> INSERT INTO DemoTable VALUES
->> ('John@gmail.com', 45, 32), ('John@gmail.com', 32, 45),
->> ('Carol@gmail.com', 32, 45), ('David@gmail.com', 45, 32);
डेटा
+-----------------+--------+--------+
| StudentEmailId | Marks1 | Marks2 |
+-----------------+--------+--------+
| John@gmail.com | 45 | 32 |
| John@gmail.com | 32 | 45 |
| Carol@gmail.com | 32 | 45 |
| David@gmail.com | 45 | 32 |
+-----------------+--------+--------+
क्वेरी: प्रत्येक छात्र के लिए Marks1 और Marks2 का अधिकतम
mysql> SELECT StudentEmailId, MAX(Marks1), MAX(Marks2)
->> FROM DemoTable
->> GROUP BY StudentEmailId;
परिणाम
+-----------------+-------------+-------------+
| StudentEmailId | max(Marks1) | max(Marks2) |
+-----------------+-------------+-------------+
| John@gmail.com | 45 | 45 |
| Carol@gmail.com | 32 | 45 |
| David@gmail.com | 45 | 32 |
+-----------------+-------------+-------------+
व्याख्या
- John: Marks1 में 45 और 32 → MAX=45; Marks2 में 32 और 45 → MAX=45
- Carol: Marks1=32, Marks2=45
- David: Marks1=45, Marks2=32
संबंधित: दोनों में से समग्र अधिकतम
SELECT StudentEmailId, GREATEST(MAX(Marks1), MAX(Marks2)) AS OverallMax
FROM DemoTable GROUP BY StudentEmailId;
परिणाम
+-----------------+------------+
| StudentEmailId | OverallMax |
+-----------------+------------+
| John@gmail.com | 45 |
| Carol@gmail.com | 45 |
| David@gmail.com | 45 |
+-----------------+------------+
पंक्ति-स्तर अधिकतम (प्रति रिकॉर्ड)
SELECT StudentEmailId, GREATEST(Marks1, Marks2) AS RowMax FROM DemoTable;
मुख्य बिंदु
GROUP BY- ईमेल के अनुसार समूहितMAX()- प्रत्येक समूह के लिए प्रति-कॉलम अधिकतमGREATEST()- एक पंक्ति में एकाधिक कॉलम में से अधिकतम