SQL HAVING Clause
Aggregate ফাংশন এর সাথে WHERE কিওয়ার্ড ব্যবহার করা যেত না বলে SQL এ HAVING clause যোগ করা হয়েছিল।
SQL HAVING সিনট্যাক্স
SELECT name_of_column, aggregate_function(name_of_column)
FROM name_OF_table
WHERE name_of_column operator value
GROUP BY name_of_column
HAVING aggregate_function(name_of_column) operator value;
নমুনা ডেটাবেজ
HAVING Clause এর ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।
নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
| আইডি নং | রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
|---|---|---|---|---|
| ১ | ১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ২ | ১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৩ | ১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৪ | ১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৫ | ১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়াঃ
| আইডি নং | রোল নাম্বার | উপস্থিতি | ভর্তির তারিখ |
|---|---|---|---|
| ১ | ১০১ | ৮৯ | ০১-১১-২০১৫ |
| ২ | ১০২ | ৯১ | ০১-১১-২০১৫ |
| ৩ | ১০৩ | ৮০ | ০১-১১-২০১৫ |
| ৪ | ১০৪ | ৭৫ | ০২-১১-২০১৫ |
| ৫ | ১০৫ | ৭৭ | ০২-১১-২০১৫ |
SQL HAVING Clause এর উদাহরণ
নিচের SQL স্টেটমেন্টটি যে সকল শিক্ষার্থী ৭৫ শতাংশ উপস্থিত ছিল তাদেরকে সিলেক্ট করবে।
উদাহরণ
SELECT Student_details.Student_name, Student_attendance.Roll_number, COUNT(Student_attendance.Attendance) AS Attendance
FROM (Student_attendance
INNER JOIN Student_details
ON Student_attendance.Roll_number=Student_details.Roll_number)
GROUP BY Student_name
HAVING COUNT(Student_attendance.Attendance) > 75;
ফলাফল
| রোল নাম্বার | শিক্ষার্থীর নাম | শতকরা উপস্থিতি |
|---|---|---|
| ১০১ | তামজীদ হাসান | ৮৯% |
| ১০২ | মিনহাজুর রহমান | ৯১% |
| ১০৩ | মোঃ সবুজ হোসেন | ৮০% |
| ১০৪ | ইয়াসিন হোসেন | ৮৭% |
| ১০৫ | ফরহাদ উদ্দিন | ৮৫% |
এখন আমরা খুজে বের করবো, শিক্ষার্থী "তামজীদ হসান" অথবা "মিনহাজুর রহমান" শতকরা ৯০ শতাংশ উপস্থিত ছিল কি না।
উদাহরণ
SELECT Student_details.Student_name, Student_attendance.Roll_number, COUNT(Student_attendance.Attendance) AS Attendance
FROM (Student_attendance
INNER JOIN Student_details
ON Student_attendance.Roll_number=Student_details.Roll_number)
WHERE Student_name="তামজীদ হসান" OR Student_name="মিনহাজুর রহমান"
GROUP BY Student_name
HAVING COUNT(Student_attendance.Attendance) > 90;
ফলাফল
| রোল নাম্বার | শিক্ষার্থীর নাম | শতকরা উপস্থিতি |
|---|---|---|
| ১০২ | মিনহাজুর রহমান | ৯১% |
Content added By
Read more