DB2 একটি শক্তিশালী রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS) যা SQL (Structured Query Language) ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে। DB2 SQL কুয়েরি ব্যবহার করে আপনি ডেটাবেসে ডেটা অনুসন্ধান, আপডেট, মুছে ফেলা এবং নতুন ডেটা যুক্ত করতে পারেন। এখানে DB2 SQL এর বিভিন্ন ধরণ এবং কুয়েরি ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
SQL (Structured Query Language) হল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের সাথে যোগাযোগের ভাষা। DB2 SQL কুয়েরি ব্যবহার করে আপনি ডেটাবেসের তথ্য পরিচালনা করতে পারেন। এটি প্রধানত Data Definition Language (DDL), Data Manipulation Language (DML) এবং Data Control Language (DCL) এর উপর ভিত্তি করে কাজ করে।
SELECT কমান্ডের সাহায্যে আপনি ডেটাবেস থেকে ডেটা নির্বাচন করতে পারেন।
উদাহরণ:
SELECT * FROM employees;
এটি employees
টেবিলের সমস্ত তথ্য নির্বাচন করবে।
বিশেষ ক্ষেত্র নির্বাচন:
SELECT first_name, last_name FROM employees;
এটি শুধুমাত্র first_name
এবং last_name
কলাম থেকে ডেটা নির্বাচন করবে।
INSERT কমান্ড ব্যবহার করে আপনি ডেটাবেসে নতুন রেকর্ড যুক্ত করতে পারেন।
উদাহরণ:
INSERT INTO employees (first_name, last_name, hire_date)
VALUES ('John', 'Doe', '2024-01-01');
এটি employees
টেবিলে নতুন একটি রেকর্ড যোগ করবে।
UPDATE কমান্ড দিয়ে আপনি বিদ্যমান ডেটা পরিবর্তন করতে পারেন।
উদাহরণ:
UPDATE employees
SET hire_date = '2024-06-01'
WHERE employee_id = 101;
এটি employee_id
101 এর জন্য hire_date
আপডেট করবে।
DELETE কমান্ডের সাহায্যে আপনি ডেটাবেস থেকে রেকর্ড মুছে ফেলতে পারেন।
উদাহরণ:
DELETE FROM employees WHERE employee_id = 101;
এটি employee_id
101 এর রেকর্ড মুছে ফেলবে।
JOIN কমান্ডের মাধ্যমে আপনি দুটি বা তার বেশি টেবিলের ডেটা একত্রে দেখতে পারেন। DB2 SQL বিভিন্ন ধরণের JOIN সমর্থন করে, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL OUTER JOIN।
INNER JOIN উদাহরণ:
SELECT employees.first_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;
এটি employees
এবং departments
টেবিলের মধ্য থেকে সাধারণ ডেটা নির্বাচন করবে যেখানে department_id
মেলে।
LEFT JOIN উদাহরণ:
SELECT employees.first_name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
এটি employees
টেবিলের সমস্ত রেকর্ড দেখাবে, এবং যেখানে সম্পর্কিত ডেটা পাওয়া যাবে সেখানে departments
টেবিলের তথ্য যোগ করবে।
Subquery হল একটি কুয়েরি যা অন্য একটি কুয়েরির মধ্যে ব্যবহার করা হয়। এটি সাধারণত WHERE বা HAVING ক্লজে ব্যবহৃত হয়।
উদাহরণ:
SELECT first_name, last_name
FROM employees
WHERE department_id = (
SELECT department_id FROM departments WHERE department_name = 'Sales'
);
এটি Sales
বিভাগের কর্মচারীদের নাম প্রদর্শন করবে।
DB2 SQL বিভিন্ন aggregation functions সমর্থন করে, যেমন COUNT()
, SUM()
, AVG()
, MIN()
, এবং MAX()
, যা ডেটার উপর বিভিন্ন গণনা করতে ব্যবহৃত হয়।
উদাহরণ:
SELECT COUNT(*), AVG(salary)
FROM employees;
এটি employees
টেবিলের মোট রেকর্ডের সংখ্যা এবং গড় বেতন দেখাবে।
GROUP BY কমান্ড ব্যবহার করে আপনি ডেটাকে গ্রুপ করে aggregation করতে পারেন।
উদাহরণ:
SELECT department_id, COUNT(*), AVG(salary)
FROM employees
GROUP BY department_id;
এটি প্রতিটি বিভাগে কতজন কর্মচারী আছে এবং তাদের গড় বেতন দেখাবে।
DB2 SQL কুয়েরি অপ্টিমাইজেশন একটি গুরুত্বপূর্ণ দিক, যা ডেটাবেসের পারফরম্যান্স এবং দক্ষতা উন্নত করতে সহায়ক। এটি Indexing, Query Execution Plans, এবং Query Caching এর মতো টেকনিক ব্যবহার করে ডেটার অনুসন্ধান দ্রুততর করে।
DB2 SQL কুয়েরি অপ্টিমাইজেশনের জন্য Query Execution Plan ব্যবহার করা হয়, যা কুয়েরির কার্যকারিতা বিশ্লেষণ করতে সহায়ক। এটি কুয়েরি অপ্টিমাইজারের দ্বারা কুয়েরি সম্পাদনার পরিকল্পনা দেখায়।
উদাহরণ:
EXPLAIN PLAN FOR
SELECT first_name, last_name FROM employees WHERE department_id = 10;
এটি কুয়েরির এক্সিকিউশন প্ল্যান দেখাবে, যাতে আপনি জানতে পারবেন কিভাবে DB2 কুয়েরিটি সম্পাদন করবে।
DB2 SQL কুয়েরি ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করা যায় এবং ডেটার কার্যকরী ব্যবস্থাপনা নিশ্চিত করা হয়। SELECT, INSERT, UPDATE, DELETE সহ আরও অনেক SQL কমান্ডের সাহায্যে ডেটাবেসে বিভিন্ন কার্যক্রম পরিচালনা করা যায়। JOIN, Subqueries, Aggregation, এবং Grouping এর মাধ্যমে আরও জটিল ডেটা অনুসন্ধান সম্ভব হয়, যা DB2 SQL কে আরও শক্তিশালী এবং কার্যকরী করে তোলে।
SQL (Structured Query Language) হল একটি স্ট্যান্ডার্ড ভাষা যা ডেটাবেসে ডেটা পরিচালনা করতে ব্যবহৃত হয়। DB2 হল IBM-এর একটি জনপ্রিয় রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS), যা SQL ব্যবহার করে ডেটাবেসের ডেটা পরিচালনা এবং বিশ্লেষণ করতে সাহায্য করে। DB2 এ SQL-এর বেসিক ধারণা নিয়ে বিস্তারিত আলোচনা করা হলো।
SQL হল ডেটাবেসের সাথে যোগাযোগ করার জন্য ব্যবহৃত প্রধান ভাষা। এটি ডেটাবেসের বিভিন্ন কাজ যেমন ডেটা ইনসার্ট, আপডেট, ডিলিট, কুয়েরি করা, এবং টেবিল ম্যানেজমেন্ট সহজে পরিচালনা করে।
DB2 SQL ব্যবহার করে, আপনি ডেটাবেসের বিভিন্ন অপারেশন সম্পাদন করতে পারেন। SQL এর কিছু মৌলিক কমান্ড এবং অপারেশন সম্পর্কে জানলে DB2 ডেটাবেস ব্যবস্থাপনাতে দক্ষ হতে পারবেন।
SQL এর প্রধান কমান্ডগুলো নিম্নরূপ:
SELECT
কমান্ড ডেটাবেস থেকে ডেটা বের করতে ব্যবহৃত হয়।
উদাহরণ:
SELECT * FROM customers;
এই কুয়েরি customers
টেবিলের সমস্ত রেকর্ড (অথবা কলাম) বের করবে।
সুনির্দিষ্ট কলাম নির্বাচন:
SELECT first_name, last_name FROM customers;
এটি শুধুমাত্র first_name
এবং last_name
কলাম থেকে ডেটা ফিরিয়ে দেবে।
INSERT
কমান্ড ডেটাবেসে নতুন ডেটা ইনসার্ট করতে ব্যবহৃত হয়।
উদাহরণ:
INSERT INTO customers (first_name, last_name, age) VALUES ('John', 'Doe', 28);
এটি customers
টেবিলে নতুন রেকর্ড যোগ করবে।
UPDATE
কমান্ড বিদ্যমান রেকর্ড আপডেট করার জন্য ব্যবহৃত হয়।
উদাহরণ:
UPDATE customers SET age = 29 WHERE customer_id = 1;
এটি customer_id
1 এর customers
টেবিলের age
কলামটি 29 দিয়ে আপডেট করবে।
DELETE
কমান্ড ডেটাবেস থেকে রেকর্ড মুছতে ব্যবহৃত হয়।
উদাহরণ:
DELETE FROM customers WHERE customer_id = 1;
এটি customer_id
1 সহ customers
টেবিল থেকে রেকর্ড মুছে ফেলবে।
WHERE
ক্লজ ব্যবহার করে, আপনি কুয়েরিতে একটি নির্দিষ্ট শর্ত যোগ করতে পারেন।
উদাহরণ:
SELECT * FROM customers WHERE age > 30;
এটি এমন সমস্ত গ্রাহকদের রেকর্ড ফিরিয়ে দেবে যাদের বয়স ৩০ এর বেশি।
ORDER BY
ব্যবহার করে, আপনি ডেটাকে একটি নির্দিষ্ট ক্রমে সাজাতে পারেন (এলফাবেটিক্যাল অথবা সংখ্যাগত ক্রমে)।
উদাহরণ:
SELECT * FROM customers ORDER BY last_name ASC;
এটি last_name
এর উপর ভিত্তি করে এলফাবেটিক্যাল অর্ডারে সাজানো গ্রাহকদের রেকর্ড ফিরিয়ে দেবে।
LIMIT
ব্যবহার করে আপনি কুয়েরি থেকে ফেরত আসা রেকর্ডের সংখ্যা সীমাবদ্ধ করতে পারেন।
উদাহরণ:
SELECT * FROM customers LIMIT 5;
এটি শুধুমাত্র ৫টি রেকর্ড ফেরত দেবে।
DISTINCT
ব্যবহার করে আপনি পুনরাবৃত্তি ডেটা বাদ দিতে পারেন এবং অনন্য মান ফিরিয়ে পেতে পারেন।
উদাহরণ:
SELECT DISTINCT age FROM customers;
এটি customers
টেবিলের সমস্ত অনন্য age
মান ফিরিয়ে দেবে।
SQL এর JOIN
ব্যবহার করে, আপনি দুটি বা তার অধিক টেবিলের ডেটা একত্রিত করতে পারেন।
উদাহরণ (Inner Join):
SELECT customers.first_name, orders.order_id
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
এটি customers
এবং orders
টেবিল থেকে তথ্য একত্রিত করে, যেখানে customer_id
দুটি টেবিলেই মিলে।
SQL এর GROUP BY
এবং HAVING
ক্লজ ব্যবহার করে আপনি ডেটার সারাংশ বা সার্ভে করতে পারেন, যেমন গড়, সর্বোচ্চ, সর্বনিম্ন ইত্যাদি।
উদাহরণ:
SELECT age, COUNT(*) FROM customers GROUP BY age;
এটি age
অনুযায়ী গ্রাহকদের সংখ্যা গণনা করবে।
DB2 এ SQL হল ডেটাবেস পরিচালনা এবং ডেটার সাথে কাজ করার জন্য প্রধান হাতিয়ার। SQL-এর মাধ্যমে আপনি ডেটাবেসের বিভিন্ন অপারেশন যেমন ডেটা নির্বাচন, ইনসার্ট, আপডেট, ডিলিট এবং জটিল কুয়েরি করতে পারেন। DB2 SQL এর মাধ্যমে আপনি কুয়েরি অপটিমাইজেশন, ডেটা অ্যানালাইসিস, এবং টেবিলের মধ্যে সম্পর্ক তৈরি করতে পারবেন। SQL এর মৌলিক ধারণা জানা থাকলে DB2 ডেটাবেস ম্যানেজমেন্টে দক্ষতা অর্জন করা সম্ভব।
DB2 বা অন্যান্য রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS) ব্যবহার করে ডেটাবেসে ডেটা পরিচালনা করতে বিভিন্ন SQL কুয়েরি ব্যবহার করা হয়। এখানে Select, Insert, Update, এবং Delete কুয়েরির বিস্তারিত আলোচনা করা হয়েছে, যা DB2 এ ডেটাবেসের সাধারণ কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।
Select কুয়েরি DB2-এ ডেটাবেস থেকে ডেটা পুনরুদ্ধার (retrieve) করার জন্য ব্যবহৃত হয়। এটি সবচেয়ে সাধারণ এবং গুরুত্বপূর্ণ কুয়েরি। এটি ডেটাবেসের একটি বা একাধিক টেবিল থেকে তথ্য বের করার জন্য ব্যবহৃত হয়।
সব কলাম থেকে সব রেকর্ড নির্বাচন করা:
SELECT * FROM employees;
নির্দিষ্ট কলাম থেকে রেকর্ড নির্বাচন করা:
SELECT first_name, last_name, salary FROM employees;
শর্ত ব্যবহার করে ডেটা নির্বাচন করা (WHERE ক্লজ):
SELECT * FROM employees WHERE department = 'Sales';
কিছু কন্ডিশনের মাধ্যমে সাজানো ডেটা (ORDER BY):
SELECT * FROM employees ORDER BY salary DESC;
Insert কুয়েরি DB2-এ নতুন ডেটা ইনসার্ট (insert) করার জন্য ব্যবহৃত হয়। এটি একটি টেবিলে নতুন রেকর্ড যুক্ত করতে ব্যবহার হয়।
একটি রেকর্ড ইনসার্ট করা:
INSERT INTO employees (first_name, last_name, department, salary)
VALUES ('John', 'Doe', 'HR', 60000);
একাধিক রেকর্ড ইনসার্ট করা:
INSERT INTO employees (first_name, last_name, department, salary)
VALUES
('Jane', 'Smith', 'IT', 75000),
('Alice', 'Johnson', 'Sales', 55000);
Update কুয়েরি DB2-এ ইতিমধ্যে থাকা ডেটার মান আপডেট (update) করার জন্য ব্যবহৃত হয়। এটি কোনো টেবিলের এক বা একাধিক রেকর্ডের মান পরিবর্তন করতে ব্যবহৃত হয়।
একটি রেকর্ড আপডেট করা:
UPDATE employees
SET salary = 65000
WHERE first_name = 'John' AND last_name = 'Doe';
একাধিক রেকর্ড আপডেট করা:
UPDATE employees
SET department = 'Finance'
WHERE salary > 70000;
সব রেকর্ডের মান আপডেট করা:
UPDATE employees
SET salary = 50000;
Delete কুয়েরি DB2-এ টেবিল থেকে রেকর্ড মুছতে (delete) ব্যবহৃত হয়। এটি একটি বা একাধিক রেকর্ডের ডেটা সরিয়ে দেয়।
একটি রেকর্ড মুছতে:
DELETE FROM employees
WHERE first_name = 'John' AND last_name = 'Doe';
একাধিক রেকর্ড মুছতে:
DELETE FROM employees
WHERE department = 'Sales';
সব রেকর্ড মুছে ফেলা:
DELETE FROM employees;
এই SQL কুয়েরিগুলোর মাধ্যমে DB2 ডেটাবেসে ডেটা ম্যানিপুলেট করা হয়, যা সাধারণ ডেটাবেস অপারেশন পরিচালনায় সহায়ক।
DB2 তে Joins এবং Subqueries ডেটাবেসে ডেটার সম্পর্ক স্থাপন এবং বিশ্লেষণ করার জন্য অত্যন্ত গুরুত্বপূর্ণ দুটি টুল। এগুলি SQL কুয়েরি প্রক্রিয়াতে ব্যবহৃত হয় এবং ডেটার মাঝে সম্পর্ক খুঁজে বের করতে সহায়তা করে। এখানে Joins এবং Subqueries সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Joins SQL তে দুটি বা ততোধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে ডেটা একত্রিত করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন টেবিলের ডেটার মধ্যে সম্পর্কিত তথ্য পাওয়ার জন্য ব্যবহৃত হয়।
INNER JOIN ব্যবহার করলে দুইটি টেবিলের মধ্যে কেবলমাত্র এমন রেকর্ডগুলো রিটার্ন হয় যেগুলি উভয় টেবিলেই মেলানো হয়।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
এই কুয়েরিতে employees
এবং departments
টেবিলের মধ্যে সম্পর্ক স্থাপন করা হচ্ছে। এখানে কেবল সেই কর্মচারীদের নাম এবং তাদের বিভাগের নাম আসবে যারা নির্দিষ্ট বিভাগে কাজ করছে।
LEFT JOIN (অথবা LEFT OUTER JOIN) ব্যবহৃত হলে, বাম দিকের টেবিলের সব রেকর্ড রিটার্ন হয়, এমনকি ডান দিকের টেবিলে সম্পর্কিত রেকর্ড না থাকলেও। ডান দিকের টেবিলের ক্ষেত্রগুলিতে NULL
মান আসবে।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
এখানে, এমন কর্মচারীদের নাম দেখানো হবে যাদের বিভাগে কাজ করার তথ্য নেই, তবে তাদের নামটি সবসময় প্রদর্শিত হবে।
RIGHT JOIN (অথবা RIGHT OUTER JOIN) হল LEFT JOIN এর বিপরীত, যেখানে ডান দিকের টেবিলের সমস্ত রেকর্ড রিটার্ন হয় এবং বাম দিকের টেবিলের ক্ষেত্রগুলোতে NULL
থাকতে পারে।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;
এখানে, এমন সব বিভাগ প্রদর্শিত হবে যেগুলোর সাথে কোনো কর্মচারী যুক্ত নয়।
FULL JOIN (অথবা FULL OUTER JOIN) ব্যবহার করলে উভয় টেবিলের সমস্ত রেকর্ড রিটার্ন হয়, এমনকি এক টেবিলের সাথে অন্য টেবিলের কোনো সম্পর্ক না থাকলেও।
উদাহরণ:
SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments ON employees.department_id = departments.id;
এখানে, সকল কর্মচারী এবং সকল বিভাগ রিটার্ন হবে, যাদের সম্পর্ক না থাকলেও তাদের জন্য NULL
মান প্রদর্শিত হবে।
Subqueries হল একটি SQL কুয়েরি যা আরেকটি কুয়েরির ভিতরে অন্তর্ভুক্ত থাকে। এগুলি মূল কুয়েরির ফলাফল হিসেবে ব্যবহার করা হয় এবং জটিল ডেটা বিশ্লেষণ করতে সাহায্য করে।
এটি এমন এক কুয়েরি যা প্রধান কুয়েরির মধ্যে ব্যবহার হয় এবং কিছু ফলাফল রিটার্ন করে। এই ধরনের সাবকুয়েরি IN
, NOT IN
, ANY
, ALL
বা EXISTS
এর সাথে ব্যবহার হতে পারে।
উদাহরণ:
SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE department_name = 'HR');
এই কুয়েরি employees
টেবিলের কর্মচারীদের নাম রিটার্ন করবে যারা HR
বিভাগের সাথে যুক্ত।
স্কেলার সাবকুয়েরি হল এমন একটি সাবকুয়েরি যা একক মান রিটার্ন করে এবং প্রধান কুয়েরিতে একাধিক ক্ষেত্রের মানের সাথে তুলনা করতে ব্যবহার হয়।
উদাহরণ:
SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
এই কুয়েরি সকল কর্মচারীর নাম রিটার্ন করবে, যাদের বেতন গড় বেতনের চেয়ে বেশি।
কোরেলেটেড সাবকুয়েরি এমন একটি সাবকুয়েরি যা প্রধান কুয়েরির প্রতিটি সারির জন্য কার্যকরী হয়। এর মানে হলো সাবকুয়েরি প্রতিটি মূল কুয়েরির সারির জন্য পুনরায় চালিত হয়।
উদাহরণ:
SELECT name
FROM employees e
WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id);
এখানে, প্রতিটি কর্মচারীর বেতন তার বিভাগের গড় বেতনের চেয়ে বেশি কিনা তা যাচাই করা হয়।
EXISTS সাবকুয়েরি ব্যবহৃত হয় যখন মূল কুয়েরি সাবকুয়েরির রেকর্ডের উপস্থিতি যাচাই করতে চায়। এটি কেবলমাত্র TRUE
বা FALSE
রিটার্ন করে।
উদাহরণ:
SELECT name
FROM employees
WHERE EXISTS (SELECT 1 FROM departments WHERE departments.id = employees.department_id);
এখানে, সমস্ত কর্মচারীর নাম রিটার্ন হবে যারা একটি বিভাগে কাজ করছেন।
JOIN
যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN ব্যবহৃত হয় ডেটার মধ্যে সম্পর্ক স্থাপনের জন্য।Joins এবং Subqueries DB2 তে ডেটাবেসের জটিল কুয়েরি তৈরিতে সাহায্য করে এবং বড় ডেটা সেটের মধ্যে সম্পর্ক বিশ্লেষণ এবং ফিল্টার করতে অত্যন্ত কার্যকরী।
DB2-এ Aggregation এবং Grouping SQL কুয়েরি লেখার জন্য গুরুত্বপূর্ণ টুলস, যা ডেটা বিশ্লেষণ এবং সংক্ষেপণের জন্য ব্যবহৃত হয়। এগুলি ব্যবহৃত হয় যখন আপনি ডেটাবেস থেকে একাধিক রেকর্ডের উপর ভিত্তি করে তথ্য সংক্ষেপিত বা সামগ্রিক তথ্য পাওয়ার চেষ্টা করেন।
Aggregation হল ডেটাবেসের একাধিক রেকর্ড থেকে একটি একক মান বের করার প্রক্রিয়া। DB2 SQL এ কিছু গুরুত্বপূর্ণ Aggregation Functions রয়েছে, যা ব্যবহৃত হয়:
ধরা যাক আমাদের কাছে একটি Sales টেবিল আছে যেখানে বিক্রয়ের তথ্য রাখা আছে, এবং আমরা বিক্রয়ের মোট পরিমাণ জানার চেষ্টা করছি।
SELECT SUM(sale_amount) AS total_sales
FROM Sales;
এখানে, SUM()
ফাংশনটি বিক্রয়ের পরিমাণের যোগফল বের করবে।
Grouping ব্যবহার করা হয় ডেটা সেটকে কিছু নির্দিষ্ট মান বা ক্যাটাগরির ভিত্তিতে ভাগ করার জন্য। এটি একটি গুরুত্বপূর্ণ টুল যেখানে একাধিক রেকর্ডের মধ্যে সংক্ষেপিত ফলাফল পেতে হয়, তবে সেটি নির্দিষ্ট কলামের উপর ভিত্তি করে ভাগ করতে হয়।
GROUP BY ক্লজ ব্যবহার করে DB2-এ গ্রুপিং করা হয়। সাধারণত, গ্রুপিং অ্যাগ্রিগেট ফাংশনগুলোর সাথে ব্যবহার করা হয়।
ধরা যাক, আমরা Sales টেবিলের মধ্যে প্রতিটি বিক্রয় প্রতিনিধি (Salesperson) এর মোট বিক্রয়ের পরিমাণ জানাতে চাই। আমরা এটি GROUP BY
ক্লজ ব্যবহার করে করতে পারি:
SELECT salesperson_id, SUM(sale_amount) AS total_sales
FROM Sales
GROUP BY salesperson_id;
এখানে, GROUP BY salesperson_id
দ্বারা প্রতিটি বিক্রয় প্রতিনিধির জন্য একটি গ্রুপ তৈরি করা হবে এবং প্রতিটি গ্রুপের জন্য SUM()
ফাংশনটি প্রয়োগ করা হবে।
অনেক সময় Aggregation এবং Grouping একসাথে ব্যবহার করা হয় যখন আপনি কিছু ক্যাটাগরি বা গ্রুপ অনুযায়ী ডেটা সংক্ষেপণ করতে চান। এই দুইটি একসাথে ব্যবহার করলে আপনি ভিন্ন ভিন্ন গ্রুপের জন্য অ্যাগ্রিগেটেড ফলাফল পেতে পারেন।
ধরা যাক, আমরা Sales টেবিল থেকে বিক্রয়ের পরিমাণ এবং প্রতিটি বিক্রয় প্রতিনিধির গড় বিক্রয় জানাতে চাই, এবং গ্রুপিং করতে চাই বিক্রয়ের মাসের ভিত্তিতে।
SELECT salesperson_id, EXTRACT(MONTH FROM sale_date) AS sale_month,
SUM(sale_amount) AS total_sales, AVG(sale_amount) AS avg_sales
FROM Sales
GROUP BY salesperson_id, EXTRACT(MONTH FROM sale_date);
এখানে:
GROUP BY salesperson_id, EXTRACT(MONTH FROM sale_date)
এই অংশটি বিক্রয়ের প্রতিনিধির সাথে মাস ভিত্তিক গ্রুপিং তৈরি করবে।SUM()
এবং AVG()
ফাংশন ব্যবহার করে, আমরা প্রতিটি গ্রুপের মোট বিক্রয় এবং গড় বিক্রয় জানতে পারবো।HAVING ক্লজ ব্যবহার করা হয় GROUP BY কুয়েরির ফলাফলে শর্ত আরোপ করার জন্য। যখন আপনি গ্রুপিংয়ের পর ফলাফল ফিল্টার করতে চান, তখন HAVING ক্লজ ব্যবহার করা হয়। এটি WHERE ক্লজের মতো কাজ করে, তবে WHERE শুধুমাত্র সিংগেল রেকর্ডে কাজ করে, আর HAVING গ্রুপেড রেকর্ডে কাজ করে।
ধরা যাক, আমরা চাই শুধুমাত্র তাদেরকে দেখাতে, যাদের বিক্রয়ের পরিমাণ ১০,০০০ টাকা বা তার বেশি।
SELECT salesperson_id, SUM(sale_amount) AS total_sales
FROM Sales
GROUP BY salesperson_id
HAVING SUM(sale_amount) >= 10000;
এখানে, HAVING SUM(sale_amount) >= 10000
গ্রুপগুলির মধ্যে শুধুমাত্র সেইগুলো ফেরত দেবে, যেগুলির মোট বিক্রয়ের পরিমাণ ১০,০০০ টাকা বা তার বেশি।
COUNT()
, SUM()
, AVG()
, MIN()
, MAX()
ফাংশন)।GROUP BY
ক্লজ)।GROUP BY
এর ফলাফলকে ফিল্টার করতে ব্যবহৃত হয়, বিশেষ করে যখন গ্রুপগুলির উপর অ্যাগ্রিগেট ফাংশন প্রয়োগ করা হয়।DB2-এ Aggregation এবং Grouping ব্যবহার করলে আপনি বিশাল ডেটাসেটকে সহজে বিশ্লেষণ এবং সংক্ষেপণ করতে পারবেন, যা ব্যবসায়ের সিদ্ধান্ত নেওয়ার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে।
common.read_more