PROC SQL হল SAS-এর একটি প্রসিডিউর, যা Structured Query Language (SQL) ব্যবহার করে ডেটাবেস থেকে ডেটা বিশ্লেষণ এবং পরিচালনা করতে ব্যবহৃত হয়। SQL একটি শক্তিশালী ভাষা, যা সাধারণত ডেটাবেস সিস্টেমের সাথে কাজ করার জন্য ব্যবহৃত হয়। SAS-এ, PROC SQL ব্যবহার করে ডেটাসেটের উপর SQL কোয়েরি চালানো যায়, ডেটাসেট তৈরি করা যায়, এবং ডেটার সাথে সম্পর্কিত বিভিন্ন কাজ করা যায়।
PROC SQL এর মাধ্যমে আপনি ডেটাসেটের সাথে কাজ করার জন্য SQL কমান্ড ব্যবহার করতে পারেন, যেমন SELECT, JOIN, GROUP BY, HAVING, ORDER BY, ইত্যাদি।
PROC SQL এর গঠন
PROC SQL;
<SQL query>;
QUIT;
- : এখানে SQL কমান্ড যেমন
SELECT,INSERT,UPDATE,DELETEইত্যাদি লিখতে হয়। - QUIT:
PROC SQLশেষ হওয়ার পরে কোড বন্ধ করতেQUITকমান্ড ব্যবহার করা হয়।
PROC SQL এর প্রধান কমান্ড এবং উদাহরণ
১. SELECT Statement
SELECT স্টেটমেন্ট ব্যবহার করে আপনি একটি ডেটাসেটের নির্দিষ্ট ভেরিয়েবল (columns) নির্বাচন করতে পারেন।
উদাহরণ: SELECT Statement
PROC SQL;
SELECT name, age, salary
FROM work.employees;
QUIT;
এখানে:
SELECTব্যবহার করেwork.employeesডেটাসেটেরname,age, এবংsalaryভেরিয়েবলগুলোর মান নির্বাচিত করা হয়েছে।
২. WHERE Clause
WHERE ক্লজ ব্যবহার করে আপনি শর্ত অনুসারে ডেটা ফিল্টার করতে পারেন।
উদাহরণ: WHERE Clause
PROC SQL;
SELECT name, salary
FROM work.employees
WHERE salary > 50000;
QUIT;
এখানে:
WHERE salary > 50000শর্তে, শুধুমাত্র সেই রেকর্ডগুলো নির্বাচিত হবে, যেখানে salary ৫০,০০০ এর বেশি।
৩. ORDER BY Clause
ORDER BY ক্লজ ব্যবহার করে ডেটাকে নির্দিষ্ট ভেরিয়েবলের ভিত্তিতে সাজানো যায়।
উদাহরণ: ORDER BY Clause
PROC SQL;
SELECT name, salary
FROM work.employees
ORDER BY salary DESC;
QUIT;
এখানে:
ORDER BY salary DESCদ্বারা ডেটাকে salary ভেরিয়েবলের ভিত্তিতে উল্টো (descending) সাজানো হবে। অর্থাৎ, সবচেয়ে বেশি স্যালারি প্রথমে আসবে।
৪. GROUP BY Clause
GROUP BY ক্লজ ব্যবহার করে আপনি ডেটাকে গ্রুপ করে পরিসংখ্যান তৈরি করতে পারেন। এটি সাধারণত aggregate functions (যেমন SUM, AVG, COUNT) এর সাথে ব্যবহার করা হয়।
উদাহরণ: GROUP BY Clause
PROC SQL;
SELECT department, AVG(salary) AS avg_salary
FROM work.employees
GROUP BY department;
QUIT;
এখানে:
AVG(salary)দ্বারা salary এর গড় বের করা হচ্ছে, এবং ডেটা department অনুযায়ী গ্রুপ করা হয়েছে।
৫. HAVING Clause
HAVING ক্লজ ব্যবহার করে আপনি GROUP BY এর পর গ্রুপ করা ডেটার উপর শর্ত প্রয়োগ করতে পারেন। এটি সাধারণত GROUP BY এর সাথে ব্যবহৃত হয়।
উদাহরণ: HAVING Clause
PROC SQL;
SELECT department, AVG(salary) AS avg_salary
FROM work.employees
GROUP BY department
HAVING AVG(salary) > 60000;
QUIT;
এখানে:
HAVING AVG(salary) > 60000শর্তে, কেবলমাত্র সেই বিভাগের গড় স্যালারি ৬০,০০০ এর বেশি হবে এমন রেকর্ডগুলো প্রদর্শিত হবে।
৬. JOIN Clause
JOIN স্টেটমেন্ট ব্যবহার করে দুটি বা তার বেশি টেবিলের ডেটা একত্রিত করা যায়। সাধারণত বিভিন্ন টেবিলের মধ্যে সম্পর্ক (relationship) স্থাপন করার জন্য JOIN ব্যবহার করা হয়।
উদাহরণ: JOIN Clause
PROC SQL;
SELECT e.name, e.salary, d.department_name
FROM work.employees e
INNER JOIN work.departments d
ON e.department_id = d.department_id;
QUIT;
এখানে:
INNER JOINব্যবহার করে employees টেবিল এবং departments টেবিলের department_id ভেরিয়েবলের মাধ্যমে ডেটা মেলানো হচ্ছে।eএবংdহল টেবিলের জন্য আলিয়াস (alias), যা টেবিলের নাম সংক্ষিপ্তভাবে ব্যবহার করতে সাহায্য করে।
৭. CREATE TABLE Statement
CREATE TABLE স্টেটমেন্ট ব্যবহার করে নতুন টেবিল তৈরি করা যায়।
উদাহরণ: CREATE TABLE Statement
PROC SQL;
CREATE TABLE work.high_salary AS
SELECT name, salary
FROM work.employees
WHERE salary > 70000;
QUIT;
এখানে:
CREATE TABLE work.high_salaryদিয়ে একটি নতুন টেবিল তৈরি করা হচ্ছে, যার মধ্যেsalary > 70000শর্ত পূর্ণ করা ডেটা থাকবে।
সারাংশ
SAS-এ PROC SQL ব্যবহার করে আপনি ডেটাসেটের উপর SQL কোয়েরি চালাতে পারেন এবং ডেটা বিশ্লেষণ, পরিবর্তন বা পরিচালনা করতে পারেন। SELECT, WHERE, ORDER BY, GROUP BY, HAVING, JOIN, এবং CREATE TABLE এর মত SQL কমান্ডের মাধ্যমে ডেটার সাথে বিভিন্ন ধরনের কাজ করা যায়।
PROC SQL আপনাকে ডেটাবেসের মতো কাজ করার সুযোগ দেয়, যা ডেটা ম্যানিপুলেশন এবং বিশ্লেষণে আরও বেশি কার্যকরী হতে পারে।
PROC SQL হল SAS-এর একটি অত্যন্ত শক্তিশালী টুল যা SQL (Structured Query Language) ব্যবহার করে ডেটা কুয়েরি করার জন্য ব্যবহৃত হয়। SQL ব্যবহার করে আপনি ডেটাসেট থেকে তথ্য নির্বাচন (select), ডেটা ফিল্টার (filter), একত্রিত (join), গ্রুপ (group) এবং অর্ডার (order) করতে পারেন। এটি SQL-এর স্ট্যান্ডার্ড কুয়েরি ভাষার মাধ্যমে ডেটা বিশ্লেষণ এবং ম্যানিপুলেশন করার একটি সহজ এবং কার্যকরী উপায়।
PROC SQL এর মূল গঠন
PROC SQL;
<SQL_query>;
QUIT;
এখানে:
<SQL_query>: এটি আপনার SQL কুয়েরি হবে, যেমনSELECT,FROM,WHERE,GROUP BY, ইত্যাদি।QUIT;: SQL প্রসেস শেষ করার জন্যQUITকমান্ড ব্যবহার করা হয়।
উদাহরণ: PROC SQL এর মাধ্যমে ডেটা কুয়েরি করা
১. SELECT কুয়েরি ব্যবহার করা
SELECT কুয়েরি ব্যবহার করে আপনি ডেটাসেট থেকে নির্দিষ্ট ভেরিয়েবল নির্বাচন করতে পারেন।
উদাহরণ:
PROC SQL;
SELECT Name, Age, Salary
FROM work.employees;
QUIT;
এখানে:
SELECT Name, Age, Salary:employeesডেটাসেট থেকেName,Age, এবংSalaryভেরিয়েবলগুলিকে নির্বাচন করা হয়েছে।FROM work.employees:work.employeesডেটাসেট থেকে ডেটা নেওয়া হচ্ছে।
২. WHERE ক্লজ ব্যবহার করে শর্তযুক্ত কুয়েরি
WHERE ক্লজ ব্যবহার করে আপনি শর্ত অনুযায়ী ডেটা ফিল্টার করতে পারেন।
উদাহরণ:
PROC SQL;
SELECT Name, Age, Salary
FROM work.employees
WHERE Age > 30 AND Salary > 50000;
QUIT;
এখানে:
WHERE Age > 30 AND Salary > 50000: এই শর্তের মাধ্যমে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করা হচ্ছে যেখানে বয়স ৩০ এর বেশি এবং স্যালারি ৫০,০০০ এর বেশি।
৩. ORDER BY ব্যবহার করে ডেটা সাজানো
ORDER BY ক্লজ ব্যবহার করে আপনি ডেটা সাজাতে পারেন (অ্যালফাবেটিক্যাল বা সংখ্যা অনুযায়ী)।
উদাহরণ:
PROC SQL;
SELECT Name, Age, Salary
FROM work.employees
ORDER BY Salary DESC;
QUIT;
এখানে:
ORDER BY Salary DESC: ডেটাকেSalaryভেরিয়েবলের মান অনুযায়ী নাম্বার অনুযায়ী সাজানো হবে, এবংDESCনির্দেশনা দেওয়া হয়েছে যাতে স্যালারি উচ্চ থেকে নিম্ন সাজানো হয়।
৪. DISTINCT ব্যবহার করে ইউনিক ভ্যালু নির্বাচন
DISTINCT কুয়েরি ব্যবহার করে আপনি একটি ভেরিয়েবলের মধ্যে পুনরাবৃত্তি মানগুলো বাদ দিয়ে ইউনিক (অদ্বিতীয়) মান নির্বাচন করতে পারেন।
উদাহরণ:
PROC SQL;
SELECT DISTINCT Department
FROM work.employees;
QUIT;
এখানে:
DISTINCT Department: শুধুমাত্রDepartmentভেরিয়েবলের ইউনিক (অদ্বিতীয়) মানগুলো নির্বাচন করা হচ্ছে।
৫. GROUP BY এবং HAVING ব্যবহার করে গ্রুপিং এবং শর্ত প্রয়োগ
GROUP BY ক্লজটি একটি ভেরিয়েবলের মানের ভিত্তিতে ডেটাকে গ্রুপ করতে ব্যবহৃত হয় এবং HAVING ক্লজটি গ্রুপের ওপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়।
উদাহরণ:
PROC SQL;
SELECT Department, AVG(Salary) AS AvgSalary
FROM work.employees
GROUP BY Department
HAVING AVG(Salary) > 60000;
QUIT;
এখানে:
GROUP BY Department: ডেটাকেDepartmentভেরিয়েবলের উপর ভিত্তি করে গ্রুপ করা হচ্ছে।HAVING AVG(Salary) > 60000: প্রতিটিDepartmentএর গড় স্যালারি ৬০,০০০ এর বেশি হলে সেগুলি দেখানো হবে।
৬. JOIN ব্যবহার করে একাধিক টেবিল একত্রিত করা
JOIN ক্লজ ব্যবহার করে আপনি একাধিক টেবিলের ডেটা একত্রিত করতে পারেন। এখানে আমরা INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN ব্যবহার করতে পারি।
উদাহরণ: INNER JOIN ব্যবহার
PROC SQL;
SELECT a.Name, a.Age, b.Department
FROM work.employees a
INNER JOIN work.departments b
ON a.DepartmentID = b.DepartmentID;
QUIT;
এখানে:
- INNER JOIN:
work.employeesএবংwork.departmentsটেবিলেরDepartmentIDভেরিয়েবলের উপর ভিত্তি করে একত্রিত হচ্ছে। aএবংbহল টেবিলের এলিয়াস (alias), যা কোডকে আরও সহজ ও সংক্ষিপ্ত করে।
৭. CREATE TABLE এবং INSERT INTO ব্যবহার করে নতুন টেবিল তৈরি
CREATE TABLE ব্যবহার করে আপনি নতুন টেবিল তৈরি করতে পারেন এবং INSERT INTO ব্যবহার করে ডেটা সেই টেবিলে যোগ করতে পারেন।
উদাহরণ: CREATE TABLE এবং INSERT INTO ব্যবহার
PROC SQL;
CREATE TABLE work.new_employees AS
SELECT Name, Age, Salary
FROM work.employees
WHERE Salary > 50000;
QUIT;
এখানে:
CREATE TABLE work.new_employees: নতুনnew_employeesটেবিল তৈরি করা হচ্ছে।SELECT Name, Age, Salary FROM work.employees WHERE Salary > 50000: স্যালারি ৫০,০০০ এর বেশি এমন কর্মীদের তথ্যnew_employeesটেবিলে সেভ করা হচ্ছে।
সারাংশ
SAS-এ PROC SQL একটি শক্তিশালী টুল, যা আপনাকে SQL ব্যবহার করে ডেটার উপর বিভিন্ন প্রক্রিয়া সম্পাদন করতে সহায়তা করে। SELECT, WHERE, ORDER BY, DISTINCT, GROUP BY, HAVING, JOIN ইত্যাদি কুয়েরি স্টেটমেন্ট ব্যবহার করে আপনি ডেটা ফিল্টার, সাজানো, গ্রুপ করা এবং একত্রিত করতে পারেন। SQL কুয়েরি ব্যবহারের মাধ্যমে ডেটা বিশ্লেষণ আরও সহজ এবং দ্রুত হয়, যা SAS-এর বিশ্লেষণ ক্ষমতা বৃদ্ধি করে।
SAS-এ SQL (Structured Query Language) ব্যবহার করা হয় ডেটাবেস বা ডেটাসেটের সাথে সম্পর্কিত বিভিন্ন ধরণের কার্যক্রম পরিচালনা করার জন্য। এই SQL কোডটি PROC SQL প্রোসিডিউরের মাধ্যমে ব্যবহৃত হয়। SELECT, JOIN, এবং GROUP BY ক্লজগুলি SQL-এ ব্যবহৃত সাধারণ কমান্ড, যা ডেটাসেট থেকে ডেটা নির্বাচন, একত্রিত করা এবং গ্রুপিং করার জন্য ব্যবহৃত হয়।
এখানে আমরা SELECT, JOIN, এবং GROUP BY ক্লজের ব্যবহার সম্পর্কে আলোচনা করব।
১. SELECT ক্লজ
SELECT ক্লজটি SQL কোডে ব্যবহৃত হয় ডেটাসেট থেকে নির্দিষ্ট কলাম বা ভেরিয়েবল নির্বাচন করতে। এটি ডেটাবেস বা ডেটাসেট থেকে ডেটা প্রদর্শন বা বের করার জন্য ব্যবহৃত হয়।
ব্যবহার:
- SELECT: নির্দিষ্ট ভেরিয়েবল নির্বাচন করতে ব্যবহৃত হয়।
- FROM: কোন ডেটাসেট বা টেবিল থেকে ডেটা নির্বাচন করতে হবে তা নির্দিষ্ট করা হয়।
উদাহরণ: SELECT ক্লজ
proc sql;
select Name, Age, Salary
from work.employees;
quit;
এখানে:
- Name, Age, এবং Salary ভেরিয়েবলগুলি work.employees ডেটাসেট থেকে নির্বাচিত হবে।
SELECT *:
যদি আপনি সব ভেরিয়েবল (কলাম) নির্বাচন করতে চান, তাহলে * ব্যবহার করতে পারেন।
proc sql;
select *
from work.employees;
quit;
এখানে:
*ব্যবহার করে পুরো ডেটাসেটের সব ভেরিয়েবল নির্বাচন করা হয়েছে।
২. JOIN ক্লজ
JOIN ক্লজটি দুটি বা তার বেশি টেবিল বা ডেটাসেটকে একত্রিত করার জন্য ব্যবহৃত হয়। এটি সাধারণত দুইটি ডেটাসেটের মধ্যে সম্পর্ক স্থাপন করে তাদের তথ্য একত্রিত করতে ব্যবহার হয়। INNER JOIN, LEFT JOIN, RIGHT JOIN ইত্যাদি বিভিন্ন ধরনের JOIN ব্যবহার করা যেতে পারে।
INNER JOIN:
INNER JOIN দুটি টেবিলের মধ্যে মিল পাওয়া রেকর্ডগুলিকে একত্রিত করে।
উদাহরণ: INNER JOIN
proc sql;
select a.Name, a.Age, b.Salary
from work.employees as a
inner join work.salaries as b
on a.EmployeeID = b.EmployeeID;
quit;
এখানে:
- INNER JOIN ব্যবহৃত হয়েছে যাতে দুটি ডেটাসেটের মধ্যে EmployeeID ভেরিয়েবল এর মাধ্যমে মিল পাওয়া রেকর্ডগুলো একত্রিত হয়।
LEFT JOIN:
LEFT JOIN প্রথম টেবিলের সব রেকর্ড রাখে এবং দ্বিতীয় টেবিলের সাথে মিল পাওয়া রেকর্ডগুলিকে যুক্ত করে।
উদাহরণ: LEFT JOIN
proc sql;
select a.Name, a.Age, b.Salary
from work.employees as a
left join work.salaries as b
on a.EmployeeID = b.EmployeeID;
quit;
এখানে:
- LEFT JOIN প্রথম ডেটাসেটের সব রেকর্ড রাখবে এবং দ্বিতীয় ডেটাসেটের সাথে মিল পাওয়া রেকর্ডগুলো যোগ করবে। যদি মিল না পাওয়া যায়, তবে Salary ভেরিয়েবলের মান NULL হবে।
৩. GROUP BY ক্লজ
GROUP BY ক্লজটি ডেটাসেটের রেকর্ডগুলো গ্রুপ করতে ব্যবহৃত হয়। এটি সাধারণত একাধিক রেকর্ডকে একটি নির্দিষ্ট ভেরিয়েবলের উপর ভিত্তি করে গ্রুপ করে এবং সেই গ্রুপের ওপর পরিসংখ্যানগত ফাংশন প্রয়োগ করতে ব্যবহৃত হয় (যেমন, গড়, সর্বোচ্চ, সর্বনিম্ন, গাণিতিক যোগফল ইত্যাদি)।
ব্যবহার:
- GROUP BY: কোন ভেরিয়েবল(s) অনুযায়ী ডেটা গ্রুপ করতে ব্যবহৃত হয়।
- HAVING: গ্রুপ করা রেকর্ডগুলোর ওপর শর্ত প্রয়োগ করতে ব্যবহৃত হয় (যেমন, গড় থেকে বেশি বা কম)।
উদাহরণ: GROUP BY ক্লজ
proc sql;
select Department, avg(Salary) as AvgSalary
from work.employees
group by Department;
quit;
এখানে:
- GROUP BY Department ব্যবহার করা হয়েছে, যাতে Department অনুযায়ী স্যালারির গড় বের করা হয়।
- AVG(Salary) গাণিতিক ফাংশনটি ব্যবহার করে প্রতিটি বিভাগের গড় স্যালারি বের করা হয়েছে।
HAVING ক্লজ:
HAVING ক্লজটি গ্রুপ করা রেকর্ডের উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়।
উদাহরণ: HAVING ক্লজ
proc sql;
select Department, avg(Salary) as AvgSalary
from work.employees
group by Department
having avg(Salary) > 50000;
quit;
এখানে:
- HAVING avg(Salary) > 50000 ব্যবহার করা হয়েছে, যার মাধ্যমে শুধুমাত্র সেসব বিভাগে স্যালারি গড় ৫০,০০০ এর বেশি সেই গ্রুপগুলি দেখানো হবে।
সারাংশ
SAS-এ PROC SQL ব্যবহারের মাধ্যমে SELECT, JOIN, এবং GROUP BY ক্লজ ব্যবহার করে ডেটা নির্বাচন, একত্রিত এবং গ্রুপ করা যায়।
- SELECT ক্লজটি ব্যবহার করে আপনি ডেটাসেটের নির্দিষ্ট ভেরিয়েবল নির্বাচন করতে পারেন।
- JOIN ক্লজটি ব্যবহৃত হয় ডেটাসেটের মধ্যে সম্পর্ক তৈরি করতে এবং সেগুলি একত্রিত করতে।
- GROUP BY ক্লজটি ডেটাসেটের রেকর্ডগুলো গ্রুপ করার জন্য ব্যবহৃত হয় এবং তার ওপর পরিসংখ্যান বা ফাংশন প্রয়োগ করা যায়।
এই ক্লজগুলির মাধ্যমে SAS-এ SQL কোড ব্যবহার করে ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণ করা সহজ এবং কার্যকরী।
SAS-এ SQL Queries ব্যবহৃত হয় ডেটাবেস বা ডেটাসেট থেকে তথ্য রিট্রিভ (retrieve) করার জন্য। Subqueries এবং Complex SQL Queries ব্যবহার করে আপনি আরও জটিল বিশ্লেষণ এবং ডেটার মধ্যে সম্পর্ক খুঁজে বের করতে পারেন। সেক্ষেত্রে, Subqueries একটি SQL কুয়েরি এর ভিতরে অন্য SQL কুয়েরি ব্যবহার করার পদ্ধতি এবং Complex SQL Queries-এর মাধ্যমে একাধিক কুয়েরি একত্রে ব্যবহার করা হয়।
Subqueries in SAS
Subqueries হল একটি SQL কুয়েরির মধ্যে অন্য একটি কুয়েরি যা SELECT, INSERT, UPDATE, বা DELETE কুয়েরির অংশ হিসেবে কাজ করে। একটি Subquery মূল কুয়েরির মান বা ফলাফল প্রদান করে, যা পরে প্রধান কুয়েরির মধ্যে ব্যবহার করা হয়।
Subquery এর গঠন:
SELECT column1, column2
FROM table_name
WHERE column_name = (SELECT column_name FROM another_table WHERE condition);
এখানে:
- প্রথম কুয়েরি মূল ডেটাসেট বা টেবিল থেকে ডেটা নির্বাচন করবে।
- দ্বিতীয় কুয়েরি (Subquery) থেকে মান নির্বাচন করবে এবং এটি মূল কুয়েরির শর্ত হিসাবে ব্যবহৃত হবে।
উদাহরণ: Subquery ব্যবহার করে সেলের দাম নির্বাচন
proc sql;
select product_name, price
from products
where price = (select max(price) from products);
quit;
এখানে:
- প্রথম কুয়েরিটি
productsটেবিল থেকেproduct_nameএবংpriceনির্বাচন করবে। - Subquery (যে অংশটি
max(price)সিলেক্ট করছে) এই দামটি নির্বাচন করবে যেটি সব সেলের মধ্যে সর্বাধিক।
Complex SQL Queries in SAS
Complex SQL Queries হল SQL কুয়েরি যা একাধিক অংশ বা শর্ত নিয়ে গঠিত, যেমন JOIN, GROUP BY, HAVING, এবং ORDER BY। এই কুয়েরিগুলি ডেটার মধ্যে সম্পর্ক খুঁজে বের করতে এবং বিশ্লেষণ করতে ব্যবহৃত হয়।
১. JOIN (একাধিক টেবিল সংযুক্ত করা)
JOIN ব্যবহৃত হয় একাধিক টেবিলকে যুক্ত করার জন্য। এতে আপনি বিভিন্ন টেবিলের মধ্যে সম্পর্ক তৈরি করে একটি কম্বাইনড আউটপুট তৈরি করতে পারেন।
উদাহরণ: INNER JOIN ব্যবহার
proc sql;
select a.product_name, b.category_name
from products as a
inner join categories as b
on a.category_id = b.category_id;
quit;
এখানে:
INNER JOINদুটি টেবিলকে যুক্ত করছে, যেখানেproductsটেবিল এবংcategoriesটেবিলের মধ্যেcategory_idফিল্ডের মাধ্যমে সম্পর্ক তৈরি হয়েছে।
২. GROUP BY (গ্রুপিং ডেটা)
GROUP BY ব্যবহার করা হয় ডেটাকে নির্দিষ্ট ভেরিয়েবলের ভিত্তিতে গ্রুপ করার জন্য, এবং গ্রুপিংয়ের পরে aggregate functions যেমন SUM, AVG, COUNT, MAX, MIN ইত্যাদি ব্যবহার করা হয়।
উদাহরণ: GROUP BY এবং SUM ব্যবহার
proc sql;
select category_name, sum(price) as total_sales
from products
group by category_name;
quit;
এখানে:
GROUP BY category_name—category_nameএর ভিত্তিতে ডেটা গ্রুপ করা হয়েছে।SUM(price)— প্রতিটি ক্যাটাগরির জন্যpriceএর যোগফল বের করা হয়েছে।
৩. HAVING (গ্রুপ করার পরে শর্ত প্রয়োগ)
HAVING ব্যবহার করা হয় GROUP BY এর পর শর্ত প্রয়োগ করার জন্য। এটি শুধুমাত্র গ্রুপের উপর শর্ত পরীক্ষা করে।
উদাহরণ: HAVING ব্যবহার
proc sql;
select category_name, avg(price) as average_price
from products
group by category_name
having avg(price) > 100;
quit;
এখানে:
HAVING avg(price) > 100— গড় মূল্য ১০০ এর বেশি এমন গ্রুপগুলিই নির্বাচন করা হবে।
৪. ORDER BY (অর্ডারিং ডেটা)
ORDER BY ব্যবহার করা হয় ডেটা সাজানোর জন্য, যেমন আকারের (ascending) বা নিম্নলিখিত (descending) আকারে সাজানো।
উদাহরণ: ORDER BY ব্যবহার
proc sql;
select product_name, price
from products
order by price desc;
quit;
এখানে:
ORDER BY price desc— দাম অনুসারে ডেটা কম থেকে বেশি (descending) অর্ডারে সাজানো হবে।
Complex SQL Query Example
একটি জটিল SQL কুয়েরি যা JOIN, GROUP BY, HAVING, এবং ORDER BY ব্যবহার করে:
proc sql;
select c.category_name, p.product_name, sum(p.price) as total_sales
from products as p
inner join categories as c
on p.category_id = c.category_id
group by c.category_name, p.product_name
having sum(p.price) > 500
order by total_sales desc;
quit;
এখানে:
INNER JOINদুটি টেবিলকে একত্রিত করেছেproductsএবংcategories।GROUP BYব্যবহার করেcategory_nameএবংproduct_nameভিত্তিতে গ্রুপিং করা হয়েছে।HAVINGদ্বারা শুধুমাত্র সেই গ্রুপগুলি নির্বাচন করা হয়েছে, যেগুলোর মোট বিক্রয় ৫০০ এর বেশি।ORDER BY total_sales descদ্বারা মোট বিক্রয়ের ভিত্তিতে ডেটা ডাউন (descending) অর্ডারে সাজানো হয়েছে।
সারাংশ
SAS-এ Subqueries এবং Complex SQL Queries ব্যবহার করে আপনি ডেটা বিশ্লেষণ এবং সম্পর্কের মধ্যে বিভিন্ন গভীরতা অনুসন্ধান করতে পারেন:
- Subqueries একটি কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করে আরও বিস্তারিত ফলাফল প্রদান করে।
- Complex SQL Queries যেমন JOIN, GROUP BY, HAVING, এবং ORDER BY একাধিক টেবিল এবং শর্তের মাধ্যমে ডেটার সঠিক বিশ্লেষণ তৈরি করে।
এই কুয়েরিগুলি ডেটার ভিতরে লুকানো সম্পর্ক খুঁজে বের করতে এবং জটিল বিশ্লেষণ সম্পাদন করতে সহায়তা করে।
SAS-এ PROC SQL একটি শক্তিশালী টুল যা ডেটাবেস ম্যানেজমেন্ট এবং ডেটা বিশ্লেষণ করার জন্য SQL (Structured Query Language) ব্যবহার করে। এটি SAS-এর ডেটাসেটগুলোর সাথে কাজ করার জন্য খুবই কার্যকর, কারণ এর মাধ্যমে ডেটা সিলেকশন, ইনসার্ট, আপডেট এবং ডিলিটের মতো বিভিন্ন কার্যক্রম করা যায়। PROC SQL ব্যবহার করে আপনি সহজেই ডেটাসেট ম্যানিপুলেট করতে পারেন, যেমন: ডেটা সিলেকশন, জয়েন, গ্রুপিং, অগ্রাধিকার (ordering) ইত্যাদি।
PROC SQL এর মৌলিক গঠন
PROC SQL;
<SQL_query>;
QUIT;
এখানে:
- <SQL_query>: আপনার SQL কোড (যেমন, SELECT, INSERT, UPDATE ইত্যাদি)।
১. SELECT: ডেটা সিলেকশন
SELECT ক্লজটি ডেটাসেট থেকে নির্দিষ্ট ভেরিয়েবল নির্বাচন করার জন্য ব্যবহৃত হয়। এটি একটি SQL কুয়েরি যা আপনাকে আপনার প্রয়োজনীয় ডেটা বের করতে সাহায্য করে।
উদাহরণ: SELECT ক্লজ ব্যবহার
PROC SQL;
SELECT Name, Age, Salary
FROM work.employees;
QUIT;
এখানে:
work.employeesডেটাসেট থেকেName,Age, এবংSalaryভেরিয়েবলগুলি সিলেক্ট করা হয়েছে।
২. WHERE: শর্তাধীন নির্বাচন
WHERE ক্লজটি ডেটা সিলেক্ট করার সময় শর্ত নির্ধারণ করতে ব্যবহৃত হয়। এটি ডেটাসেটে থাকা রেকর্ডগুলোকে কিছু নির্দিষ্ট শর্তের ভিত্তিতে ফিল্টার করে।
উদাহরণ: WHERE ক্লজ ব্যবহার
PROC SQL;
SELECT Name, Age, Salary
FROM work.employees
WHERE Age > 30;
QUIT;
এখানে:
WHERE Age > 30শর্তে কেবলমাত্র সেই রেকর্ডগুলো নির্বাচন করা হবে যেখানেAge৩০ এর বেশি।
৩. JOIN: একাধিক টেবিল সংযুক্ত করা
JOIN ক্লজটি একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে। এটি দুইটি বা তার বেশি টেবিলের ডেটা একত্রিত করতে ব্যবহৃত হয়।
উদাহরণ: INNER JOIN ব্যবহার
PROC SQL;
SELECT e.Name, e.Age, d.Department
FROM work.employees e
INNER JOIN work.departments d
ON e.Department_ID = d.Department_ID;
QUIT;
এখানে:
INNER JOINদুটি টেবিলemployeesএবংdepartmentsসংযুক্ত করেছে, যেখানেe.Department_ID = d.Department_IDশর্তে সম্পর্ক স্থাপন করা হয়েছে।- e এবং d হলো টেবিলের জন্য ব্যবহৃত এলিয়াস নাম।
উদাহরণ: LEFT JOIN ব্যবহার
PROC SQL;
SELECT e.Name, e.Age, d.Department
FROM work.employees e
LEFT JOIN work.departments d
ON e.Department_ID = d.Department_ID;
QUIT;
এখানে:
- LEFT JOIN ব্যবহার করে,
employeesটেবিলের সমস্ত রেকর্ড প্রদর্শন করা হবে, এবং যেখানে সম্পর্ক না আছে সেখানেNULLপ্রদর্শিত হবে।
৪. GROUP BY: গ্রুপিং ডেটা
GROUP BY ক্লজটি ডেটাকে নির্দিষ্ট ভেরিয়েবলের ভিত্তিতে গ্রুপ করে, এবং গ্রুপগুলোর উপর সঙ্গতিপূর্ণ কার্যক্রম (যেমন, গড়, মোট ইত্যাদি) সম্পাদন করতে ব্যবহৃত হয়।
উদাহরণ: GROUP BY ক্লজ ব্যবহার
PROC SQL;
SELECT Department, AVG(Salary) AS Avg_Salary
FROM work.employees
GROUP BY Department;
QUIT;
এখানে:
GROUP BY Departmentক্লজটিemployeesডেটাসেটেরDepartmentভেরিয়েবলের ভিত্তিতে গ্রুপিং করে, এবং প্রতিটি বিভাগের জন্য গড় স্যালারিAVG(Salary)হিসাব করে।
HAVING ক্লজ: গ্রুপের উপর শর্ত প্রয়োগ
HAVING ক্লজটি GROUP BY এর পরে শর্ত প্রয়োগ করতে ব্যবহৃত হয়। এটি একটি গ্রুপে পরিসংখ্যান প্রক্রিয়া করার পর শর্ত নির্ধারণ করতে ব্যবহৃত হয়।
PROC SQL;
SELECT Department, AVG(Salary) AS Avg_Salary
FROM work.employees
GROUP BY Department
HAVING AVG(Salary) > 50000;
QUIT;
এখানে:
HAVING AVG(Salary) > 50000শর্তে কেবলমাত্র সেই বিভাগগুলো থাকবে, যার গড় স্যালারি ৫০,০০০ এর বেশি।
৫. ORDER BY: ডেটা সাজানো
ORDER BY ক্লজটি ডেটাকে নির্দিষ্ট ভেরিয়েবলের ভিত্তিতে সাজাতে ব্যবহৃত হয়, যেমন গড় স্যালারি থেকে শুরু করে সর্বনিম্ন বা সর্বোচ্চ মান।
উদাহরণ: ORDER BY ক্লজ ব্যবহার
PROC SQL;
SELECT Name, Age, Salary
FROM work.employees
ORDER BY Salary DESC;
QUIT;
এখানে:
ORDER BY Salary DESCক্লজটি স্যালারি অনুযায়ী ডেটাকে ডাউনওয়ার্ড সাজিয়ে প্রদর্শন করবে (সবচেয়ে বড় স্যালারি আগে আসবে)।
৬. INSERT INTO: নতুন রেকর্ড যোগ করা
INSERT INTO ক্লজটি একটি টেবিলে নতুন রেকর্ড বা ডেটা ইনসার্ট করতে ব্যবহৃত হয়।
উদাহরণ: INSERT INTO ক্লজ ব্যবহার
PROC SQL;
INSERT INTO work.employees (Name, Age, Salary)
VALUES ('John Doe', 35, 70000);
QUIT;
এখানে:
INSERT INTOকমান্ডটিwork.employeesটেবিলের মধ্যে একটি নতুন রেকর্ড যুক্ত করছে।
৭. UPDATE: ডেটা আপডেট করা
UPDATE ক্লজটি টেবিলের মধ্যে থাকা ডেটা আপডেট করতে ব্যবহৃত হয়।
উদাহরণ: UPDATE ক্লজ ব্যবহার
PROC SQL;
UPDATE work.employees
SET Salary = 75000
WHERE Name = 'John Doe';
QUIT;
এখানে:
UPDATEকমান্ডটিwork.employeesটেবিলের মধ্যেJohn Doeএর স্যালারি ৭৫০০০ এ আপডেট করছে।
৮. DELETE: রেকর্ড মুছে ফেলা
DELETE ক্লজটি টেবিল থেকে নির্দিষ্ট রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়।
উদাহরণ: DELETE ক্লজ ব্যবহার
PROC SQL;
DELETE FROM work.employees
WHERE Name = 'John Doe';
QUIT;
এখানে:
DELETE FROMকমান্ডটিwork.employeesটেবিল থেকেJohn Doeনামের রেকর্ড মুছে ফেলছে।
সারাংশ
SAS-এ PROC SQL একটি শক্তিশালী এবং জনপ্রিয় টুল যা ডেটাসেট ম্যানিপুলেশন, ডেটা বিশ্লেষণ এবং ডেটাবেস পরিচালনার জন্য ব্যবহৃত হয়। এর মাধ্যমে আপনি SELECT, JOIN, GROUP BY, ORDER BY, INSERT, UPDATE, এবং DELETE ক্লজের মাধ্যমে ডেটা সহজে পরিচালনা করতে পারবেন। SQL এর সাহায্যে ডেটাকে সিলেক্ট, ম্যানিপুলেট, গ্রুপ, সাজানো, এবং নতুন ডেটা ইনসার্ট বা মুছে ফেলা সম্ভব।
Read more