GROUP BY এবং HAVING হল SQL এর দুটি শক্তিশালী কমান্ড, যা ডেটাকে গ্রুপ করে এবং নির্দিষ্ট শর্তের ভিত্তিতে ফিল্টার করে। মারিয়া ডিবি (MariaDB)-তে এই দুটি কমান্ড ব্যবহৃত হয় একত্রে, যাতে ডেটার ওপর বিভিন্ন ধরনের আংশিক বা সন্নিবেশিত (aggregated) ফলাফল পাওয়া যায়।
GROUP BY
GROUP BY কমান্ডটি ব্যবহৃত হয় ডেটাকে এক বা একাধিক কলামের মানের ভিত্তিতে গ্রুপ করার জন্য। এটি সাধারণত অ্যাগ্রিগেট ফাংশনগুলির সাথে ব্যবহার করা হয়, যেমন COUNT, SUM, AVG, MIN, বা MAX, যাতে প্রতিটি গ্রুপের ওপর গাণিতিক বিশ্লেষণ করা যায়।
গ্রুপিংয়ের সাধারণ সিঙ্কট্যাক্স:
SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name;
এখানে:
column_name: যেটি আপনি গ্রুপ করতে চান।AGGREGATE_FUNCTION: যেমন COUNT, SUM, AVG, MIN, বা MAX।
উদাহরণ:
ধরা যাক, একটি sales টেবিল রয়েছে, যেখানে বিভিন্ন বিভাগের (department) বিক্রির তথ্য রয়েছে। আপনি যদি প্রতিটি বিভাগের মোট বিক্রি জানাতে চান, তবে নিম্নলিখিত SQL কমান্ড ব্যবহার করবেন:
SELECT department, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY department;
এটি প্রতিটি department এর জন্য মোট বিক্রি (sales_amount) যোগফল প্রদর্শন করবে।
HAVING
HAVING কমান্ডটি GROUP BY এর সাথে ব্যবহার করা হয়, তবে এটি শুধুমাত্র গ্রুপগুলোর ওপর শর্ত প্রযোজ্য করতে ব্যবহৃত হয়। যেখানে WHERE ক্লজটি সাধারণ রেকর্ডগুলোর জন্য শর্ত দেয়, HAVING গ্রুপের ওপর শর্ত প্রয়োগ করে।
HAVING এর সিঙ্কট্যাক্স:
SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;
এখানে:
condition: যে শর্তটি গ্রুপের ওপর প্রয়োগ করতে চান, যেমন SUM বা AVG এর মানের ওপর শর্ত।
উদাহরণ:
ধরা যাক, আপনি শুধু সেই সব বিভাগের বিক্রি দেখতে চান, যেখানে মোট বিক্রির পরিমাণ ৫০,০০০-এর বেশি। তখন আপনার SQL কোডটি হবে:
SELECT department, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY department
HAVING SUM(sales_amount) > 50000;
এটি শুধু সেই বিভাগের তথ্য প্রদর্শন করবে, যেখানে মোট বিক্রির পরিমাণ ৫০,০০০ এর বেশি।
GROUP BY এবং HAVING একত্রে ব্যবহার
GROUP BY এবং HAVING একত্রে ব্যবহার করে, আপনি গ্রুপের ওপর শর্ত আরোপের মাধ্যমে আরো নির্দিষ্ট ফলাফল পেতে পারেন।
উদাহরণ:
ধরা যাক, আপনি employees টেবিল থেকে প্রতিটি department-এর গড় বেতন দেখতে চান, যেখানে গড় বেতন ৪৫,০০০ এর বেশি। তখন SQL কোডটি হবে:
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 45000;
এটি সেই সব department-এর গড় বেতন প্রদর্শন করবে, যেখানে গড় বেতন ৪৫,০০০ এর বেশি।
সারাংশ
GROUP BY এবং HAVING মিলে মারিয়া ডিবি (MariaDB) এ শক্তিশালী ডেটাবেস কুয়েরি তৈরির জন্য ব্যবহৃত হয়। GROUP BY ডেটাকে নির্দিষ্ট কলামের ওপর ভিত্তি করে গ্রুপ করে এবং HAVING কমান্ড গ্রুপের ওপর শর্ত আরোপ করে। এই দুটি কমান্ড একসাথে ব্যবহার করে আপনি ডেটাবেস থেকে খুব নির্দিষ্ট এবং সুনির্দিষ্ট ফলাফল পেতে পারেন।
Read more