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