4.1 গ্রুপিং কলাম

যেটি খুব গুরুত্বপূর্ণ তা হল যে আপনি যদি গোষ্ঠীভুক্ত রেকর্ড করেন, তবে বিভাগে SELECTআপনি শুধুমাত্র সেই কলামগুলি নির্দিষ্ট করতে পারেন যার দ্বারা ডেটা গোষ্ঠীবদ্ধ করা হয়েছে।

আপনিনা পারেনএকটি টাইপ ক্যোয়ারী লিখুন এবং বিভাগে নামSELECT কলাম নির্দিষ্ট করুন :

SELECT brand, name
FROM product
GROUP BY brand

পণ্য সারণিতে নামের ক্ষেত্রে আপনার কাছে একগুচ্ছ সারি রয়েছে এবং এখানে কোন সারিটি প্রতিস্থাপন করতে হবে তা স্পষ্ট নয়। আবার চিন্তা করুন: আপনি প্রতিটি ব্র্যান্ডের পণ্যের সংখ্যা জানতে চান এবং ফলস্বরূপ টেবিলটি কীভাবে পণ্যের নাম পেতে পারে?

আপনি যদি অপারেটর ব্যবহার করেন GROUP BY, তাহলে সাধারণ সারিগুলি আপনার ফলাফলে প্রবেশ করতে পারবে না, তবে শুধুমাত্র সেই কলামগুলি যার দ্বারা ডেটা গোষ্ঠীবদ্ধ করা হয় এবং "গণনা করা কলাম", যেমনCOUNT(*)

4.2 গণনা করা কলাম দ্বারা গোষ্ঠীকরণ

কিন্তু আপনি একাধিক কলাম এবং এমনকি গণনা করা কলাম দ্বারা গোষ্ঠীবদ্ধ করতে পারেন। উদাহরণ:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

এবং এই প্রশ্নের ফলাফল:

ভাড়া_বছর মোট
2012 1
2013 1
2014 1
2015 2
2018 1

আমাদের অনুরোধ বিশ্লেষণ করা যাক.

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

গ্রুপ করার আগে এই টেবিলটি কেমন হবে তা আবার দেখা যাক:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	join_date
FROM employee

এবং এই প্রশ্নের ফলাফল:

আইডি নাম ভাড়া_বছর তারিখ যোগ দিতে
1 ইভানভ ইভান 2012 2012-06-30
2 পেট্রোভ পেট্র 2013 2013-08-12
3 ইভানভ সের্গেই 2014 2014-01-01
4 রাবিনোভিচ মইশা 2015 2015-05-12
5 কিরিয়েনকো আনাস্তাসিয়া 2015 2015-10-10
6 ভাস্কা 2018 2018-11-11

কিন্তু এই ফলাফলের সারণীটিকে hire_year দ্বারা গোষ্ঠীভুক্ত করা যেতে পারে এবং একটি নির্দিষ্ট বছরে কতজন লোক নিয়োগ করা হয়েছিল তা খুঁজে বের করা যেতে পারে।

4.3 একাধিক কলাম দ্বারা গোষ্ঠীকরণ

এখন প্রতি বছরের প্রতিটি মাসে আমরা কতজন কর্মী নিয়োগ করেছি তা খুঁজে বের করার চেষ্টা করি। এটি করার জন্য, আমাদের ক্যোয়ারীতে একবারে একটি নয়, দুটি গণনা করা ক্ষেত্র যোগ করতে হবে - ভাড়ার বছর (হায়ার_বছর) এবং ভাড়ার মাস (হায়ার_মাস)।

এর মত একটি প্রশ্ন লিখুন:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	join_date
FROM employee

এবং এই প্রশ্নের ফলাফল:

আইডি নাম ভাড়া_বছর ভাড়া_মাস তারিখ যোগ দিতে
1 ইভানভ ইভান 2012 6 2012-06-30
2 পেট্রোভ পেট্র 2013 8 2013-08-12
3 ইভানভ সের্গেই 2014 1 2014-01-01
4 রাবিনোভিচ মইশা 2015 5 2015-05-12
5 কিরিয়েনকো আনাস্তাসিয়া 2015 10 2015-10-10
6 ভাস্কা 2018 এগারো 2018-11-11

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

এটি করার জন্য, অপারেটরের পরে, GROUP BYআপনাকে একটি কলাম নয়, দুটির নাম ব্যবহার করতে হবে। উদাহরণ:

SELECT
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	COUNT(*) AS total
FROM employee
GROUP BY hire_year, hire_month

এবং এই প্রশ্নের ফলাফল:

ভাড়া_বছর ভাড়া_মাস মোট
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 এগারো 1

আমাদের টেবিলে কয়েকটি রেকর্ড রয়েছে, তাই মোট কলামের সর্বত্র ইউনিট রয়েছে। এবং যাইহোক, মনে রাখবেন যে আমরা যত বেশি কলাম গ্রুপ করব, ফলাফলে আমাদের আরও সারি থাকবে।