উত্তর: DBMS বা SQL-এ GROUP BY operation ব্যবহার করা হয় তখন, যখন কোনো table-এর rows-গুলোকে একটি বা একাধিক column-এর একই value-এর ভিত্তিতে group করতে হয় এবং প্রতিটি group-এর উপর aggregate function ব্যবহার করে summary result বের করতে হয়।
সাধারণত COUNT(), SUM(), AVG(), MAX() এবং MIN() function-এর সাথে GROUP BY ব্যবহার করা হয়। এর মাধ্যমে আমরা total, average, count, highest বা lowest value group অনুযায়ী বের করতে পারি।
সহজ ভাষায়: যখন একই ধরনের data একসাথে group করে প্রতিটি group-এর summary বের করতে হয়, তখন GROUP BY ব্যবহার করা হয়।
GROUP BY operation ব্যবহার করা হয় table-এর rows-গুলোকে এক বা একাধিক column-এর same value-এর ভিত্তিতে group করার জন্য। এটি সাধারণত aggregate function যেমন COUNT(), SUM(), AVG(), MAX() এবং MIN()-এর সাথে ব্যবহৃত হয়। উদাহরণস্বরূপ, প্রতিটি class-এ কতজন student আছে বা প্রতিটি department-এর total salary কত—এসব বের করতে GROUP BY ব্যবহার করা হয়।
নিচের অবস্থাগুলোতে আমরা GROUP BY ব্যবহার করি—
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name;
এখানে column_name অনুযায়ী rows group করা হয় এবং aggregate function প্রতিটি group-এর উপর calculation করে।
ধরা যাক, একটি Student table আছে:
| Roll | Name | Class | Marks |
|---|---|---|---|
| 1 | Rahul | 10 | 85 |
| 2 | Sima | 10 | 90 |
| 3 | Amit | 9 | 78 |
| 4 | Rina | 9 | 88 |
এখন যদি আমরা জানতে চাই প্রতিটি class-এ কতজন student আছে, তাহলে GROUP BY ব্যবহার করা হবে।
SELECT Class, COUNT(*) AS Total_Students
FROM Student
GROUP BY Class;
ব্যাখ্যা: এই query Student table-এর rows-গুলোকে Class অনুযায়ী group করবে এবং প্রতিটি class-এ কতজন student আছে তা দেখাবে।
| Class | Total_Students |
|---|---|
| 10 | 2 |
| 9 | 2 |
এখানে Class 10-এর students এক group হয়েছে এবং Class 9-এর students আরেক group হয়েছে।
GROUP BY সাধারণত aggregate function-এর সাথে ব্যবহৃত হয়। যেমন:
| Aggregate Function | GROUP BY-এর সাথে ব্যবহার |
|---|---|
| COUNT() | প্রতিটি group-এ কতগুলো row আছে তা গণনা করে |
| SUM() | প্রতিটি group-এর total value বের করে |
| AVG() | প্রতিটি group-এর average value বের করে |
| MAX() | প্রতিটি group-এর সর্বোচ্চ value বের করে |
| MIN() | প্রতিটি group-এর সর্বনিম্ন value বের করে |
SELECT Class, SUM(Marks) AS Total_Marks
FROM Student
GROUP BY Class;
ব্যাখ্যা: এই query প্রতিটি class-এর students-এর marks যোগ করে total marks দেখাবে।
SELECT Class, AVG(Marks) AS Average_Marks
FROM Student
GROUP BY Class;
ব্যাখ্যা: এই query প্রতিটি class-এর average marks বের করবে।
SELECT Class, MAX(Marks) AS Highest_Marks
FROM Student
GROUP BY Class;
ব্যাখ্যা: এই query প্রতিটি class-এর মধ্যে highest marks বের করবে।
ধরা যাক, একটি company database-এ Employee table আছে। সেখানে employee-এর department এবং salary information আছে।
যদি আমরা জানতে চাই প্রতিটি department-এর total salary কত, তাহলে query হবে:
SELECT Department, SUM(Salary) AS Total_Salary
FROM Employee
GROUP BY Department;
এই query Employee table-এর rows-গুলোকে Department অনুযায়ী group করবে এবং প্রতিটি department-এর total salary দেখাবে।
GROUP BY-এর result-এর উপর condition apply করতে HAVING clause ব্যবহার করা হয়। WHERE clause individual rows-এর উপর কাজ করে, কিন্তু HAVING grouped data-এর উপর condition apply করে।
SELECT Class, AVG(Marks) AS Average_Marks
FROM Student
GROUP BY Class
HAVING AVG(Marks) > 80;
ব্যাখ্যা: এই query শুধুমাত্র সেই class-গুলো দেখাবে, যাদের average marks 80-এর বেশি।
| বিষয় | WHERE | HAVING |
|---|---|---|
| কাজ | Individual row filter করে | Group result filter করে |
| ব্যবহার | GROUP BY-এর আগে ব্যবহার হয় | GROUP BY-এর পরে ব্যবহার হয় |
| Aggregate Function | সাধারণত aggregate function-এর সাথে ব্যবহার করা যায় না | Aggregate function-এর সাথে ব্যবহার করা যায় |
| উদাহরণ | WHERE Class = 10 | HAVING AVG(Marks) > 80 |
| প্রয়োজন | GROUP BY ব্যবহার |
|---|---|
| প্রতিটি class-এ student সংখ্যা বের করা | GROUP BY Class |
| প্রতিটি department-এর total salary বের করা | GROUP BY Department |
| প্রতিটি subject-এর average marks বের করা | GROUP BY Subject |
| প্রতিটি city থেকে customer সংখ্যা বের করা | GROUP BY City |
ধরা যাক, একটি class register-এ ছাত্রদের class এবং marks লেখা আছে। এখন যদি শিক্ষক জানতে চান class 9-এর average marks কত এবং class 10-এর average marks কত, তাহলে প্রথমে students-দের class অনুযায়ী group করতে হবে। তারপর প্রতিটি group-এর average marks বের করতে হবে।
Database-এ এই কাজটি করার জন্য GROUP BY ব্যবহার করা হয়।
অর্থাৎ, GROUP BY data-কে category অনুযায়ী ভাগ করে এবং aggregate function সেই category-wise summary result বের করে।
প্রথমে GROUP BY-এর সংজ্ঞা লিখবে।
তারপর লিখবে এটি same value-এর rows group করে।
Aggregate function-এর সাথে ব্যবহারের কথা উল্লেখ করবে।
COUNT(), SUM(), AVG() ইত্যাদির উদাহরণ দেবে।
Student বা Employee table-এর ছোট SQL example লিখবে।
GROUP BY মানে একই ধরনের data group করে প্রতিটি group-এর summary result বের করা।
DBMS বা SQL-এ GROUP BY operation ব্যবহার করা হয় table-এর rows-গুলোকে এক বা একাধিক column-এর same value-এর ভিত্তিতে group করার জন্য। এটি সাধারণত aggregate function যেমন COUNT(), SUM(), AVG(), MAX() এবং MIN()-এর সাথে ব্যবহৃত হয়। GROUP BY-এর মাধ্যমে প্রতিটি group-এর summary result বের করা যায়। উদাহরণস্বরূপ, Student table-এ প্রতিটি class-এ কতজন student আছে তা জানতে SELECT Class, COUNT(*) FROM Student GROUP BY Class; query ব্যবহার করা যায়। তাই category-wise বা group-wise data analysis করার জন্য GROUP BY operation ব্যবহার করা হয়।