Skill

SAS SQL (PROC SQL)

স্যাস (SAS) - Big Data and Analytics

369

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 আপনাকে ডেটাবেসের মতো কাজ করার সুযোগ দেয়, যা ডেটা ম্যানিপুলেশন এবং বিশ্লেষণে আরও বেশি কার্যকরী হতে পারে।

Content added By

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-এর বিশ্লেষণ ক্ষমতা বৃদ্ধি করে।

Content added By

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 কোড ব্যবহার করে ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণ করা সহজ এবং কার্যকরী।

Content added By

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_namecategory_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 একাধিক টেবিল এবং শর্তের মাধ্যমে ডেটার সঠিক বিশ্লেষণ তৈরি করে।

এই কুয়েরিগুলি ডেটার ভিতরে লুকানো সম্পর্ক খুঁজে বের করতে এবং জটিল বিশ্লেষণ সম্পাদন করতে সহায়তা করে।

Content added 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 এর সাহায্যে ডেটাকে সিলেক্ট, ম্যানিপুলেট, গ্রুপ, সাজানো, এবং নতুন ডেটা ইনসার্ট বা মুছে ফেলা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...