কম্পিউটার টিউটোরিয়াল

MySQL-এ GROUP BY এবং MAX একাধিক কলামে একসাথে ব্যবহার

একাধিক কলামে GROUP BY এবং MAX() একসাথে ব্যবহার করতে সাবকোয়েরি বা উইন্ডো ফাংশন (MySQL 8.0+) ব্যবহার করুন।

টেবিল ও ডেটা

CREATE TABLE GroupByMaxDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CategoryId INT,
    Value1 INT,
    Value2 INT
);

INSERT INTO GroupByMaxDemo (CategoryId, Value1, Value2) VALUES
(10, 100, 50),
(10, 100, 70),
(10, 50, 100),
(20, 180, 150);

পদ্ধতি ১: সাবকোয়েরি (সব ভার্সন)

SELECT t2.CategoryId, t2.Value1, MAX(t2.Value2) AS MaxValue2
FROM (
    SELECT CategoryId, MAX(Value1) AS Value1
    FROM GroupByMaxDemo
    GROUP BY CategoryId
) t1
INNER JOIN GroupByMaxDemo t2 
    ON t2.CategoryId = t1.CategoryId AND t2.Value1 = t1.Value1
GROUP BY t2.CategoryId, t2.Value1;

ফলাফল

+------------+--------+-------------+
| CategoryId | Value1 | MaxValue2   |
+------------+--------+-------------+
| 10         | 100    | 70          |
| 20         | 180    | 150         |
+------------+--------+-------------+

পদ্ধতি ২: ROW_NUMBER() উইন্ডো ফাংশন (MySQL 8.0+)

WITH Ranked AS (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY CategoryId ORDER BY Value1 DESC, Value2 DESC) AS rn
    FROM GroupByMaxDemo
)
SELECT CategoryId, Value1, Value2
FROM Ranked
WHERE rn = 1;

ফলাফল একই হবে। উইন্ডো ফাংশন পদ্ধতিটি আরও পঠনীয় এবং পারফরম্যান্সে ভালো।

  1. MySQL কোয়েরি: AND OR ব্যবহার করে নির্বাচন করা

  2. MySQL-এ একাধিক সারি ও কলাম কনক্যাটেনেট করে একক সারি বানানো

  3. MySQL-এ GROUP BY ও COUNT একসাথে ব্যবহার করে ডুপ্লিকেট গ্রুপ করেই ম্যাক্স মান বের করা

  4. MySQL ডেটাবেস তৈরি ও ব্যবহার