কম্পিউটার টিউটোরিয়াল

SQL GROUP BY: ডেটা গোষ্ঠীकरणের পূর্ণ গাইড

SQL GROUP BY স্টেটমেন্ট অ্যাগ্রিগেট ফাংশনে প্রদর্শিত হয়। এটি একটি কোয়েরি থেকে সিলেক্ট করা ডেটাকে একটি নির্দিষ্ট কলাম অনুযায়ী গোষ্ঠীভুক্ত করতে ব্যবহৃত হয়। আপনি GROUP BY স্টেটমেন্ট ব্যবহার করে একাধিক কলাম নির্দিষ্ট করতে পারেন যেগুলো গোষ্ঠীভুক্ত হবে।

যখন আপনি SQL-এ অ্যাগ্রিগেট ফাংশন কাজ করেন, তবে সাদৃশ্য কলাম মান অনুযায়ী সারিগুলো একত্রে গোষ্ঠীভুক্ত করা প্রায়শই প্রয়োজন হয়।

উদাহরণস্বরূপ, ধরুন আপনি আপনার ব্যবসার শাখার নামের তালিকা চান। পাশাপাশি আপনি সেই শাখাগুলোতে কতজন কর্মী কাজ করে সেটিও দেখতে চান। আপনাকে একটি অ্যাগ্রিগেট ফাংশন এবং শাখার নাম অনুযায়ী গ্রুপ বাই করতে হবে।

এখানেই SQL GROUP BY ক্লজ কাজে লাগে। এই টিউটোরিয়ালে আমরা GROUP BY ক্লজ কীভাবে ব্যবহার করতে হয় সেটি আলোচনা করব।

অ্যাগ্রিগেট ফাংশন রিফ্রেশার

প্রায়শই—যখন আপনি একটি ডেটাবেসের সাথে কাজ করেন—আপনি ডেটাবেসের ভিতরের প্রকৃত ডেটা দেখতে চান না। বরং আপনি ডেটা সম্পর্কে তথ্য চান। উদাহরণস্বরূপ, আপনি আপনার ব্যবসা কতটি অনন্য পণ্য বিক্রি করে সেটি জানতে চান বা একটি লিডারবোর্ডের সর্বোচ্চ স্কোর।

SQL-এ এই তথ্য পেতে பல বিল্ট-ইন ফাংশন আছে। এগুলোকে অ্যাগ্রিগেট ফাংশন বলা হয়।

উদাহরণস্বরূপ, ধরুন আপনি জানতে চান কতজন কর্মী সেলস অ্যাসোসিয়েট, তবে আপনি COUNT ফাংশন ব্যবহার করতে পারেন। COUNT ফাংশন নির্দিষ্ট মাপদণ্ড পূরণকারী সারির সংখ্যা গণনা করে ফেরত দেয়। অন্যান্য অ্যাগ্রিগেট ফাংশন হলো SUM, AVG, MIN, এবং MAX।

যদি আপনি অ্যাগ্রিগেট ফাংশন সম্পর্কে আরও জানতে চান, তবে আমাদের SQL অ্যাগ্রিগেট ফাংশন গাইড পড়ুন।

SQL GROUP BY

SQL GROUP BY ক্লজ সারিগুলো গোষ্ঠীভুক্ত করে। GROUP BY ক্লজগুলো অ্যাগ্রিগেট ফাংশন যেমন MIN এবং MAX ব্যবহার করা কোয়েরিতে সাধারণ। GROUP BY স্টেটমেন্ট SQL-কে বলে আপনার কোয়েরিতে যেকোনো নন-অ্যাগ্রিগেট কলাম কোয়েরি করলে সেটি কীভাবে অ্যাগ্রিগেট করা হবে।

GROUP BY স্টেটমেন্টের সিনট্যাক্স হলো:

SELECT COUNT(column1_name), column2_name FROM table1_name GROUP BY column2_name;

আমরা আমাদের কোয়েরিতে একটি অ্যাগ্রিগেট ফাংশন ব্যবহার করেছি এবং অন্য একটি কলাম নির্দিষ্ট করেছি।

যেকোনো কোয়েরিতে এই পরিস্থিতি হলে, আমাদের GROUP BY স্টেটমেন্ট ব্যবহার করতে হয়। GROUP BY স্টেটমেন্ট SQL-কে বলে অ্যাগ্রিগেট ফাংশনের বাইরে থাকা ব্রাঞ্চ ডেটা কীভাবে প্রদর্শন করবে। আপনাকে সেই টেবিল দিয়ে গ্রুপ করতে হবে যা অ্যাগ্রিগেট ফাংশনে নেই।

GROUP BY ক্লজ শুধু SQL SELECT স্টেটমেন্টে ব্যবহার করা হয়।

চলুন SQL-এ GROUP BY ক্লজের একটি উদাহরণ দেখি।

GROUP BY SQL উদাহরণ

ধরুন আমরা কর্মশক্তিকে দেওয়া সকল টাইটেলের মোট কর্মীর সংখ্যা বের করতে চাই। অন্য কথায়, আমরা জানতে চাই কতজন সেলস অ্যাসোসিয়েট, কতজন মার্কেটিং ডাইরেক্টর, ইত্যাদি।

আমরা নিচের কোয়েরি ব্যবহার করে এই তথ্য পেতে পারি:

SELECT title, COUNT(title) FROM employees GROUP BY title;

কোয়েরি একাধিক রেকর্ড ফেরত দেয়:

title count
Senior Sales Associate 1
Sales Associate 4
Vice President of Sales 1
Marketing Director 1

(৪ সারি)

আমাদের GROUP BY কোয়েরি কর্মীদের ধারণ করা অনন্য টাইটেলের তালিকা ফেরত দিয়েছে। আমরা প্রতিটি টাইটেলের পাশে কতজন কর্মী সেই টাইটেল ধারণ করে সেটি দেখতে পাচ্ছি।

SQL-এ GROUP BY কখন ব্যবহার করা উচিত?

একটি GROUP BY ক্লজ শুধু তখন প্রয়োজন হয় যখন আপনি অ্যাগ্রিগেট ফাংশন থেকে ফেরত আসা তথ্যের বাইরে আরও কিছু তথ্য পেতে চান। আমরা এটিকে আগে কিছুটা আলোচনা করেছি।

যদি আপনি আপনার কতজন গ্রাহক আছে সেটি জানতে চান, তবে আপনাকে শুধু একটি রেগুলার কোয়েরি চালাতে হবে। এখানে একটি উদাহরণ কোয়েরি যা এই তথ্য ফেরত দেবে:

SELECT COUNT(name) FROM customers;

আমাদের কোয়েরি ফলাফল গোষ্ঠীভুক্ত করে ফেরত দেয়:

count
7

(১ সারি)

যদি আপনি জানতে চান আপনার প্রতিটি লয়ালটি প্ল্যানে কতজন গ্রাহক আছে, তবে আপনাকে একটি GROUP BY স্টেটমেন্ট ব্যবহার করতে হবে। এখানে একটি উদাহরণ কোয়েরি যা লয়ালটি প্ল্যান এবং প্রতিটি প্ল্যানে কতজন গ্রাহক আছে সেটির তালিকা দেবে:

SELECT loyalty_plan, COUNT(loyalty_plan) FROM customers GROUP BY loyalty_plan;

আমাদের কোয়েরি ডেটা সংকলন করে। তারপর, আমাদের কোয়েরি ফেরত দেয়:

loyalty_plan count
Gold 1
None 3
Silver 1
Bronze 2

(৪ সারি)

SQL Group By একাধিক কলাম

যদি আমরা চাই, তবে আমরা GROUP BY একাধিক কলামে পারফর্ম করতে পারি। উদাহরণস্বরূপ, ধরুন আমরা প্রতিটি শাখায় নির্দিষ্ট টাইটেল ધারণকারী কতজন কর্মী আছে সেটির তালিকা চাই। আমরা নিচের কোয়েরি ব্যবহার করে এই ডেটা পেতে পারি:

SELECT branch, title, COUNT(title) FROM employees GROUP BY branch, title;

আমাদের কোয়েরি ফলাফল সেট নিচের মতো দেখায়:

branch title count
Stamford Sales Associate 1
Albany Vice President of Sales 1
San Francisco Sales Associate 1
San Francisco Senior Sales Associate 1
Albany Marketing Director 1
Boston Sales Associate 2

(৬ সারি)

আমাদের কোয়েরি প্রতিটি কর্মী যে টাইটেল ধারণ করে সেটির তালিকা তৈরি করেছে। আমরা প্রতিটি টাইটেলের পাশে কতজন লোক সেই টাইটেল ধারণ করে সেটি দেখতে পাচ্ছি। আমাদের ডেটা প্রতিটি কর্মী যে শাখায় কাজ করে এবং তাদের টাইটেল অনুযায়ী গোষ্ঠীভুক্ত হয়েছে।

উপসংহার

SQL GROUP BY ক্লজ যেকোনো স্টেটমেন্টে যেখানে একটি অ্যাগ্রিগেট ফাংশন ব্যবহার করা হয় এবং একটি অতিরিক্ত টেবিল কোয়েরি করা হয়, সেখানে আবশ্যক। আপনাকে সেই কলাম দিয়ে গ্রুপ করা উচিত যা অ্যাগ্রিগেট ফাংশনে উল্লেখ নেই।

আপনি কি চ্যালেঞ্জ খুঁজছেন? একটি স্টেটমেন্ট লিখুন যা বের করবে প্রতিটি শাখায় কতজন কর্মী কাজ করে।

টেবিলটি বলা হয় "employees" এবং শাখার নাম যেখানে সংরক্ষিত সেটি কলামটি "branch"। উপরের টিউটোরিয়ালে ফিরে যান এবং দেখুন আপনার কোয়েরি আমরা যা আলোচনা করেছি তার ভিত্তিতে অর্থপূর্ণ কিনা।

আমরা SQL শিখতে একটি সম্পূর্ণ গাইড লিখেছি। এই গাইড বIgিনার এবং যারা ইতিমধ্যে SQL মাস্টার করার পথে আছে তাদের জন্য উপযুক্ত। আমাদের How to Learn SQL পেজে চেক করুন।

  1. Rhythmbox-এর সম্পূর্ণ গাইড

  2. ভিন্ডোজ ১০-এ মাউস সেটিংসের সম্পূর্ণ গাইড

  3. ফোর্টনাইট সিস্টেম রিকোয়ারমেন্টের সম্পূর্ণ গাইড

  4. ফিটবিট পে মাস্টার করুন: সম্পূর্ণ ব্যবহারকারী গাইড