SQL Server (Transact-SQL)-এ HAVING ক্লজ GROUP BY ক্লজের সাথে ব্যবহার হয় যাতে রিটার্ন হওয়া সারির গ্রুপ সীমাবদ্ধ করা যায়, শুধু কন্ডিশন TRUE হলে।
SQL Server-এ HAVING ক্লজ সিনট্যাক্স
SELECT bieuthuc1, bieuthuc2, … bieuthuc_n, ham_tong(bieuthuc) FROM bang [WHERE dieukien] GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n HAVING dieukien_having;
ভেরিয়েবল নাম বা মান
ham_tong
SUM, COUNT, MIN, MAX বা AVG যেন ফাংশন।
bieuthuc1, bieuthuc2, ... bieuthuc_n
যে এক্সপ্রেশন যোগফল ফাংশনের ভেতরে নয় এবং GROUP BY ক্লজে থাকতে হবে।
WHERE dieukien
ঐচ্ছিক। রেকর্ড সিলেক্ট করার শর্ত।
HAVING dieukien_having
এটি একটি অতিরিক্ত কন্ডিশন যা শুধু এগ리게ট রেজাল্টে প্রয়োগ হয় রিটার্ন হওয়া সারির গ্রুপ সীমাবদ্ধ করতে। শুধু যেসব গ্রুপের কন্ডিশন TRUE ইভ্যালুয়েট হবে সেগুলো রেজাল্ট সেটে থাকবে।
উদাহরণ - SUM ফাংশন ব্যবহার
SELECT bophan, SUM(soluong) AS 'Tong so luong' FROM sanpham GROUP BY bophan HAVING SUM(soluong) > 100;
উপরের HAVING ক্লজ উদাহরণ SUM ফাংশন ব্যবহার করে ডিপার্টমেন্টের নাম এবং মোট কuantity (সংশ্লিষ্ট ডিপার্টমেন্টে) রিটার্ন করে। HAVING ক্লজ ফলাফল ফিল্টার করবে যাতে শুধু ১০০-এর চেয়ে বেশি কuantity वाले ডিপার্টমেন্ট রিটার্ন হয়।
উদাহরণ - COUNT ফাংশন ব্যবহার
SELECT thanhpho, COUNT(*) AS 'So nhanvien' FROM nhanvien WHERE bang = 'California' GROUP BY thanhpho HAVING COUNT(*) > 20;
এই উদাহরণ শহর এবং কর্মচারীদের সংখ্যা (সেই শহরে) রিটার্ন করবে যারা বর্তমানে California-এ। HAVING ক্লজ ফিল্টার করবে শুধু ২০-এর চেয়ে বেশি কর্মচারী वाले শহর রিটার্ন করতে।
উদাহরণ - MIN ফাংশন ব্যবহার
SELECT bophan, MIN(luong) AS 'Luong thap nhat' FROM nhanvien GROUP BY bophan HAVING MIN(luong) >= 50000;
এই উদাহরণে, ফেরত দেওয়া ফলাফল প্রতিটি ডিপার্টমেন্টের নাম এবং ন্যূনতম বেতন। HAVING ক্লজ শুধু যেসব ডিপার্টমেন্টের ন্যূনতম বেতন ৫০,০০০ বা তার বেশি সেগুলো রিটার্ন করবে।
উদাহরণ - MAX ফাংশন ব্যবহার
SELECT ho, MAX(luong) AS 'Luong cao nhat' FROM nhanvien GROUP BY bophan HAVING MAX(luong) > 34000;
এই চূড়ান্ত উদাহরণে, ফলাফল কর্মচারীর উপনাম এবং সেই উপনামের মানের জন্য সর্বোচ্চ বেতন। HAVING ক্লজ শুধু যেসব উপনামের সর্বোচ্চ বেতন ৩৪,০০০-এর চেয়ে বেশি সেগুলো সীমাবদ্ধ করে।