GROUP BY এবং HAVING SQL কুয়েরি ক্লজ দুটি ব্যবহৃত হয় একত্রে ডেটা গ্রুপিং এবং ফিল্টারিংয়ের জন্য। যেখানে GROUP BY ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করে এবং HAVING কন্ডিশন প্রয়োগ করে গ্রুপের উপর ফিল্টারিং করে।
১. GROUP BY কুয়েরি
GROUP BY কুয়েরি SQL তে ডেটা গ্রুপ করতে ব্যবহৃত হয়। এটি একাধিক রেকর্ডকে একটি নির্দিষ্ট কলামের মানের ভিত্তিতে গ্রুপ করে এবং গ্রুপে থাকা ডেটার উপর অ্যাগ্রিগেট ফাংশন (যেমন COUNT(), SUM(), AVG(), MAX(), MIN()) প্রয়োগ করে।
উদাহরণ:
ধরা যাক, আমাদের একটি Sales টেবিল রয়েছে যা বিক্রির তথ্য ধারণ করে। টেবিলের মধ্যে রয়েছে ProductID, SaleAmount, এবং SaleDate।
-- Sales টেবিল থেকে প্রতিটি ProductID এর মোট বিক্রয় পরিমাণ বের করা
SELECT ProductID, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY ProductID;
এখানে, ProductID অনুযায়ী SaleAmount এর যোগফল (SUM) বের করা হচ্ছে। GROUP BY ProductID এর মাধ্যমে ডেটা প্রতিটি ProductID এর জন্য গ্রুপ করা হচ্ছে।
২. HAVING কুয়েরি
HAVING কুয়েরি ক্লজ GROUP BY এর পর ফিল্টারিং করতে ব্যবহৃত হয়। এটি সাধারণত WHERE কুয়েরি ক্লজের সাথে তুলনা করা হয়, কিন্তু WHERE কুয়েরি ক্লজ সাধারণত একক রেকর্ডের জন্য ফিল্টার করে, এবং HAVING গ্রুপের উপর ফিল্টার প্রয়োগ করে।
উদাহরণ:
-- Sales টেবিল থেকে এমন ProductID গুলি বের করা, যেগুলির মোট বিক্রয় পরিমাণ ১০০০-এর বেশি
SELECT ProductID, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY ProductID
HAVING SUM(SaleAmount) > 1000;
এখানে, GROUP BY ProductID দ্বারা প্রতিটি ProductID এর গ্রুপ তৈরি করা হয়েছে এবং HAVING SUM(SaleAmount) > 1000 শর্তটি প্রয়োগ করা হয়েছে, যাতে শুধুমাত্র সেগুলি দেখানো হয় যেখানে SaleAmount এর যোগফল ১০০০-এর বেশি।
GROUP BY এবং HAVING এর সাথে একত্রে ব্যবহার
একটি কুয়েরিতে GROUP BY এবং HAVING উভয়ই ব্যবহার করা হয়, যখন আপনি ডেটা গ্রুপ করতে চান এবং তারপরে গ্রুপে থাকা ডেটার উপর শর্তাবলী প্রয়োগ করতে চান।
উদাহরণ:
-- Sales টেবিল থেকে প্রতিটি ProductID এর মোট বিক্রয় পরিমাণ বের করা, যেখানে বিক্রয় পরিমাণ ১০০০ এর বেশি
SELECT ProductID, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY ProductID
HAVING SUM(SaleAmount) > 1000;
এটি পূর্বের উদাহরণের মতোই, যেখানে প্রথমে ProductID এর উপর গ্রুপিং করা হচ্ছে এবং পরে HAVING এর মাধ্যমে শর্ত দেওয়া হচ্ছে।
সারাংশ
- GROUP BY কুয়েরি ডেটাকে একটি নির্দিষ্ট কলামের উপর গ্রুপ করে এবং অ্যাগ্রিগেট ফাংশন ব্যবহার করতে সাহায্য করে।
- HAVING কুয়েরি গ্রুপ করা ডেটার উপর শর্ত প্রয়োগ করে, যা WHERE কুয়েরি ক্লজের মতো কাজ করে কিন্তু এটি গ্রুপের উপর ফিল্টার করে, একক রেকর্ডের উপর নয়।
GROUP BY এবং HAVING একত্রে ব্যবহৃত হলে এটি গ্রুপিং এবং শর্তের ভিত্তিতে ডেটা ফিল্টার করার একটি শক্তিশালী কৌশল তৈরি করে।
Read more