কারণ GROUP BY ধারা ছাড়া MySQL দ্বারা প্রত্যাবর্তিত আউটপুট বিভ্রান্ত করতে পারে। আমরা নীচের 'ছাত্র' টেবিলে নিম্নলিখিত উদাহরণ দিচ্ছি, এটি প্রদর্শন করার জন্য -
mysql> Select * from Student; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+---------+---------+-----------+ | 1 | Gaurav | Delhi | Computers | | 2 | Aarav | Mumbai | History | | 15 | Harshit | Delhi | Commerce | | 20 | Gaurav | Jaipur | Computers | +------+---------+---------+-----------+ 4 rows in set (0.00 sec) mysql> Select count(*), Name from Student; +----------+--------+ | count(*) | name | +----------+--------+ | 4 | Gaurav | +----------+--------+ 1 row in set (0.00 sec)
উপরের প্রশ্নের ফলাফল থেকে আমরা লক্ষ্য করতে পারি যে এটি টেবিলের মোট সারির সংখ্যা হিসাবে গ্রুপ ফাংশন COUNT(*) এর আউটপুট প্রদান করে কিন্তু 'নাম' ক্ষেত্রের 'গৌরব' মানটি বিভ্রান্তিকর কারণ আমরা কিসের ভিত্তিতে করি? , হয় এটি কলামের প্রথম মান অথবা এটি কলামে একাধিকবার সংরক্ষিত থাকে, MySQL এটি প্রদান করে৷
এখন যদি আমরা এই ক্যোয়ারীটি GROUP BY ক্লজ দিয়ে লিখি তাহলে ফলাফল সেটটি নিম্নরূপ -
mysql> Select count(*), name from student GROUP BY id; +----------+---------+ | count(*) | name | +----------+---------+ | 1 | Gaurav | | 1 | Aarav | | 1 | Harshit | | 1 | Gaurav | +----------+---------+ 4 rows in set (0.00 sec)
উপরের ফলাফল সেট থেকে লক্ষ্য করা যায় যে GROUP BY ধারার সাহায্যে আমরা একটি অর্থপূর্ণ আউটপুট পেয়েছি।