MySQL-এ একই ছাত্রের একাধিক রো থাকলে (Marks1, Marks2) প্রতিটি মার্কস কলামের সর্বোচ্চ মান বের করতে MAX() এবং GROUP BY ব্যবহার করা হয়।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
StudentEmailId VARCHAR(20),
Marks1 INT,
Marks2 INT
);
INSERT INTO DemoTable VALUES('John@gmail.com',45,32);
INSERT INTO DemoTable VALUES('John@gmail.com',32,45);
INSERT INTO DemoTable VALUES('Carol@gmail.com',32,45);
INSERT INTO DemoTable VALUES('David@gmail.com',45,32);
কুয়েরি: ছাত্র অনুযায়ী Marks1 এবং Marks2-এর MAX
SELECT
StudentEmailId,
MAX(Marks1) AS MaxMarks1,
MAX(Marks2) AS MaxMarks2
FROM DemoTable
GROUP BY StudentEmailId;
ফলাফল
+-----------------+-------------+-------------+
| StudentEmailId | MaxMarks1 | MaxMarks2 |
+-----------------+-------------+-------------+
| John@gmail.com | 45 | 45 |
| Carol@gmail.com | 32 | 45 |
| David@gmail.com | 45 | 32 |
+-----------------+-------------+-------------+
ব্যাখ্যা
GROUP BY StudentEmailId— একই ইমেইলের রোগুলো গ্রুপ করেMAX(Marks1)— গ্রুপে Marks1-এর সর্বোচ্চ মানMAX(Marks2)— গ্রুপে Marks2-এর সর্বোচ্চ মান- John: Marks1=(45,32)→45, Marks2=(32,45)→45
এক্সটেনশন: সবচেয়ে বড় মার্কস (দুই কলামের মধ্যে)
SELECT StudentEmailId, GREATEST(MAX(Marks1), MAX(Marks2)) AS OverallMax
FROM DemoTable GROUP BY StudentEmailId;
পিভট/ট্রান্সপোজ (MySQL 8.0+)
SELECT StudentEmailId,
MAX(CASE WHEN subject = 'Marks1' THEN score END) AS Marks1,
MAX(CASE WHEN subject = 'Marks2' THEN score END) AS Marks2
FROM (
SELECT StudentEmailId, 'Marks1' AS subject, Marks1 AS score FROM DemoTable
UNION ALL
SELECT StudentEmailId, 'Marks2', Marks2 FROM DemoTable
) t GROUP BY StudentEmailId;