SQL HAVING Clause
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;
ফলাফল
রোল নাম্বার | শিক্ষার্থীর নাম | শতকরা উপস্থিতি |
---|---|---|
১০২ | মিনহাজুর রহমান | ৯১% |