Aggregate ফাংশন কী?
অনেকগুলো সারি থেকে হিসাব করে একটি মান বের করার ফাংশনকে Aggregate ফাংশন বলে। যেমন মোট কতজন শিক্ষার্থী, সর্বোচ্চ নম্বর কত, গড় নম্বর কত।
| ফাংশন | কাজ |
|---|---|
COUNT() | কয়টি সারি আছে গণনা করে |
SUM() | সব মান যোগ করে |
AVG() | গড় বের করে |
MAX() | সবচেয়ে বড় মান দেয় |
MIN() | সবচেয়ে ছোট মান দেয় |
সিনট্যাক্স
SELECT [ফাংশন]([কলামের নাম]) AS [নতুন নাম] FROM [টেবিলের নাম];
উদাহরণ ১: COUNT দিয়ে গণনা
কলেজে মোট কতজন শিক্ষার্থী আছে? COUNT(*) সব সারি গণনা করে।
SELECT COUNT(*) FROM student;| COUNT(*) |
|---|
| 5 |
কলামের শিরোনাম হয়েছে COUNT(*)। দেখতে সুন্দর না। AS দিয়ে নাম দিই।
SELECT COUNT(*) AS total_student FROM student;| total_student |
|---|
| 5 |
উদাহরণ ২: MAX ও MIN
ICT (275) বিষয়ে সর্বোচ্চ ও সর্বনিম্ন নম্বর কত? একই Query তে একাধিক ফাংশন লেখা যায়।
SELECT MAX(marks) AS highest, MIN(marks) AS lowest
FROM result
WHERE subject_code = 275;ব্যাখ্যা
WHERE subject_code = 275→আগে শুধু ICT এর ৫টি সারি নেয়MAX(marks)→সেই ৫টির মধ্যে সবচেয়ে বড় নম্বরMIN(marks)→সেই ৫টির মধ্যে সবচেয়ে ছোট নম্বর
| roll | subject_code | marks |
|---|---|---|
| 1 | 275 | 88 |
| 1 | 174 | 82 |
| 1 | 101 | 76 |
| 2 | 275 | 78 |
| 2 | 253 | 75 |
| 2 | 109 | 72 |
| 3 | 275 | 29 |
| 3 | 304 | 65 |
| 3 | 101 | 60 |
| 4 | 275 | 31 |
| 4 | 174 | 90 |
| 4 | 101 | 70 |
| 5 | 275 | 65 |
| 5 | 253 | 84 |
| 5 | 109 | 80 |
| highest | lowest |
|---|---|
| 88 | 29 |
উদাহরণ ৩: SUM দিয়ে মোট নম্বর
roll 1 তিনটি বিষয়ে মোট কত নম্বর পেয়েছে? 88 + 82 + 76।
SELECT SUM(marks) AS total_marks
FROM result
WHERE roll = 1;| total_marks |
|---|
| 246 |
উদাহরণ ৪: AVG দিয়ে গড়
ICT বিষয়ের গড় নম্বর কত? (88 + 78 + 29 + 31 + 65) ÷ 5।
SELECT AVG(marks) AS average
FROM result
WHERE subject_code = 275;| average |
|---|
| 58.2 |
ROUND দিয়ে দশমিক ছোট করা
Bangla (101) এর গড় হয় (76 + 60 + 70) ÷ 3 = 68.666…। দশমিকের পরে অনেক অঙ্ক আসে। ROUND(মান, 2) দিলে দশমিকের পরে ২ ঘর থাকে।
SELECT ROUND(AVG(marks), 2) AS average
FROM result
WHERE subject_code = 101;| average |
|---|
| 68.67 |
আরও একটি উদাহরণ: আলাদা মান গণনা
student টেবিলে কয়টি আলাদা গ্রুপ আছে? COUNT এর ভেতরে DISTINCT দিলে একই মান একবার গোনা হয়।
SELECT COUNT(DISTINCT group_name) AS total_group
FROM student;| total_group |
|---|
| 3 |
- Aggregate ফাংশন অনেক সারি থেকে একটি মান দেয়। তাই ফলাফলে একটি সারি আসে।
- WHERE আগে সারি বাছাই করে, তারপর ফাংশন হিসাব করে।
SELECT name, MAX(marks) FROM resultএর মতো সাধারণ কলাম আর Aggregate ফাংশন একসাথে লিখো না। প্রতিটি দলের হিসাব করতে GROUP BY লাগে, যা পরের পাঠে শিখবো।- AVG এর ফলাফলে দশমিকের পরে কয়টি অঙ্ক দেখাবে তা DBMS ভেদে আলাদা। যেমন MySQL এ 58.2 দেখাতে পারে 58.2000।
অনুশীলন
প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।
subject টেবিলে মোট কয়টি বিষয় আছে?
উত্তর দেখো
SELECT COUNT(*) AS total_subject FROM subject;| total_subject |
|---|
| 6 |
result টেবিলে সবচেয়ে বেশি নম্বর কত?
উত্তর দেখো
SELECT MAX(marks) AS highest FROM result;| highest |
|---|
| 90 |
roll 5 এর মোট নম্বর কত?
উত্তর দেখো
SELECT SUM(marks) AS total_marks
FROM result
WHERE roll = 5;| total_marks |
|---|
| 229 |
Physics (174) বিষয়ের গড় নম্বর কত?
উত্তর দেখো
SELECT AVG(marks) AS average
FROM result
WHERE subject_code = 174;| average |
|---|
| 86.0 |
কয়টি রেজাল্টে নম্বর ৮০ বা তার বেশি?
উত্তর দেখো
SELECT COUNT(*) AS total
FROM result
WHERE marks >= 80;| total |
|---|
| 5 |
