aggregate

পাঠ ৮ · COUNT, SUM, AVG, MAX, MIN

Aggregate ফাংশন কী?

অনেকগুলো সারি থেকে হিসাব করে একটি মান বের করার ফাংশনকে Aggregate ফাংশন বলে। যেমন মোট কতজন শিক্ষার্থী, সর্বোচ্চ নম্বর কত, গড় নম্বর কত।

Aggregate ফাংশন
ফাংশনকাজ
COUNT()কয়টি সারি আছে গণনা করে
SUM()সব মান যোগ করে
AVG()গড় বের করে
MAX()সবচেয়ে বড় মান দেয়
MIN()সবচেয়ে ছোট মান দেয়

সিনট্যাক্স

SQL Syntax Rule
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)→সেই ৫টির মধ্যে সবচেয়ে ছোট নম্বর
result (মূল টেবিল)১৫টি সারি
rollsubject_codemarks
127588
117482
110176
227578
225375
210972
327529
330465
310160
427531
417490
410170
527565
525384
510980
↓ MAX(marks), MIN(marks)
ফলাফল১টি সারি
highestlowest
8829

উদাহরণ ৩: 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