সমস্যা
সাধারণত GROUP BY ব্যবহার করলে শুধু গ্রুপ করা কলাম এবং সমষ্টি ফাংশন (যেমন MAX, SUM) বের করা যায়। কিন্তু প্রতিটি সারির পাশে সমষ্টি মান (যেমন সর্বোচ্চ মার্কস) দেখাতে হলে সাবকোয়েরি বা উইন্ডো ফাংশন লাগে।
সারণি ও ডেটা
mysql> create table DemoTable1621 (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentMarks int
-> );
mysql> insert into DemoTable1621(StudentName,StudentMarks) values('Chris',45),('Bob',78),('David',89),('Adam',87);
কোয়েরি (সাবকোয়েরি পদ্ধতি)
mysql> select tblData.*,
-> (select max(StudentMarks) from DemoTable1621) as MaximumMarks
-> from DemoTable1621 tblData;
ফলাফল
+-----------+-------------+--------------+--------------+ | StudentId | StudentName | StudentMarks | MaximumMarks | +-----------+-------------+--------------+--------------+ | 1 | Chris | 45 | 89 | | 2 | Bob | 78 | 89 | | 3 | David | 89 | 89 | | 4 | Adam | 87 | 89 | +-----------+--------------+--------------+--------------+
বিকল্প: উইন্ডো ফাংশন (MySQL 8.0+)
SELECT *, MAX(StudentMarks) OVER () AS MaximumMarks FROM DemoTable1621;
উইন্ডো ফাংশন দক্ষতর এবং পঠনযোগ্য। পুরনো ভার্সনে সাবকোয়েরি ব্যবহার করতে হয়।