Skill

SQL এর বেসিক কুয়েরি এবং ফিল্টারিং

টি-এসকিউএল (T-SQL) - Database Tutorials

528

SQL (Structured Query Language) ব্যবহার করে ডেটাবেসের ডেটা নির্বাচন, ইনসার্ট, আপডেট এবং ডিলিট করা যায়। SQL কুয়েরি এক্সিকিউট করার সময় আপনি ডেটাবেস থেকে প্রয়োজনীয় ডেটা সংগ্রহ করতে পারেন এবং তার ওপর বিভিন্ন ফিল্টার প্রয়োগ করতে পারেন।

নিচে SQL এর বেসিক কুয়েরি এবং ফিল্টারিং সম্পর্কিত কিছু গুরুত্বপূর্ণ বিষয় আলোচনা করা হলো:


১. বেসিক SQL কুয়েরি: SELECT

SELECT স্টেটমেন্ট SQL এর সবচেয়ে মৌলিক কুয়েরি, যা ডেটাবেস থেকে ডেটা নির্বাচন (retrieve) করার জন্য ব্যবহৃত হয়।

উদাহরণ:

-- সমস্ত কলাম থেকে সমস্ত রেকর্ড নির্বাচন
SELECT * FROM Employees;

এই কুয়েরি Employees টেবিলের সব ডেটা নির্বাচন করবে।


২. নির্দিষ্ট কলাম নির্বাচন

যদি আপনি সব কলাম না নিয়ে, শুধু নির্দিষ্ট কলাম নির্বাচন করতে চান, তাহলে আপনি কলামের নাম উল্লেখ করতে পারেন।

উদাহরণ:

-- শুধুমাত্র Name এবং Position কলাম নির্বাচন
SELECT Name, Position FROM Employees;

এই কুয়েরি Employees টেবিল থেকে শুধু Name এবং Position কলামের ডেটা রিটার্ন করবে।


৩. WHERE ক্লজ এবং ফিল্টারিং

WHERE ক্লজ SQL কুয়েরির একটি গুরুত্বপূর্ণ অংশ, যা ডেটা নির্বাচন করার সময় শর্ত (condition) প্রয়োগ করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি নির্দিষ্ট ডেটা ফিল্টার করতে পারেন।

উদাহরণ:

-- যেখানে Position 'Manager' হবে, এমন রেকর্ড নির্বাচন
SELECT * FROM Employees WHERE Position = 'Manager';

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Position কলামের মান 'Manager'


৪. বিভিন্ন শর্তের সাথে WHERE ক্লজ ব্যবহার

আপনি একাধিক শর্তও একসাথে ব্যবহার করতে পারেন AND, OR, এবং NOT অপারেটর দিয়ে।

উদাহরণ:

-- যেখানে Position 'Manager' এবং Age 30 এর বেশি হবে
SELECT * FROM Employees WHERE Position = 'Manager' AND Age > 30;

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Position কলাম 'Manager' এবং Age কলাম 30 এর বেশি।

OR উদাহরণ:

-- যেখানে Position 'Manager' অথবা 'Developer' হবে
SELECT * FROM Employees WHERE Position = 'Manager' OR Position = 'Developer';

এটি Employees টেবিল থেকে এমন রেকর্ড নির্বাচন করবে, যেখানে Position কলাম 'Manager' অথবা 'Developer'

NOT উদাহরণ:

-- যেখানে Position 'Manager' না হবে
SELECT * FROM Employees WHERE NOT Position = 'Manager';

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Position কলাম 'Manager' নয়।


৫. BETWEEN অপারেটর

BETWEEN অপারেটর ব্যবহার করে আপনি একটি রেঞ্জে ডেটা নির্বাচন করতে পারেন, যেমন সংখ্যার বা তারিখের রেঞ্জ।

উদাহরণ:

-- যেখানে Age 25 এবং 40 এর মধ্যে হবে
SELECT * FROM Employees WHERE Age BETWEEN 25 AND 40;

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Age কলামের মান 25 থেকে 40 এর মধ্যে।


৬. LIKE অপারেটর

LIKE অপারেটর ব্যবহার করে আপনি প্যাটার্নের সাথে মিলিয়ে ডেটা নির্বাচন করতে পারেন। এটি সাধারণত স্ট্রিং মানের জন্য ব্যবহৃত হয়।

উদাহরণ:

-- যেখানে Name কলাম 'John' দিয়ে শুরু হবে
SELECT * FROM Employees WHERE Name LIKE 'John%';

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Name কলাম 'John' দিয়ে শুরু হয়।

আরও উদাহরণ:

-- যেখানে Name কলাম 'J' দিয়ে শুরু হবে এবং 'n' দিয়ে শেষ হবে
SELECT * FROM Employees WHERE Name LIKE 'J%n';

এটি 'J' দিয়ে শুরু এবং 'n' দিয়ে শেষ হওয়া নামগুলো নির্বাচন করবে।


৭. IN অপারেটর

IN অপারেটর ব্যবহার করে আপনি একটি নির্দিষ্ট মানের মধ্যে ডেটা নির্বাচন করতে পারেন।

উদাহরণ:

-- যেখানে Position কলাম 'Manager', 'Developer', অথবা 'Analyst' হবে
SELECT * FROM Employees WHERE Position IN ('Manager', 'Developer', 'Analyst');

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Position কলাম 'Manager', 'Developer', বা 'Analyst'


৮. NULL চেক করা

IS NULL বা IS NOT NULL অপারেটর ব্যবহার করে আপনি এমন ডেটা নির্বাচন করতে পারেন যেগুলোর মান NULL

উদাহরণ:

-- যেখানে Age কলাম NULL হবে
SELECT * FROM Employees WHERE Age IS NULL;

এটি Employees টেবিল থেকে সেই সমস্ত রেকর্ড নির্বাচন করবে, যাদের Age কলাম NULL


সারাংশ

  • SELECT: ডেটা নির্বাচন করার জন্য ব্যবহৃত হয়।
  • WHERE: ডেটা ফিল্টার করতে ব্যবহৃত হয়, যেখানে আপনি শর্ত প্রয়োগ করতে পারেন।
  • AND, OR, NOT: একাধিক শর্তের সাথে ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়।
  • BETWEEN: একটি রেঞ্জে ডেটা নির্বাচন করতে ব্যবহৃত হয়।
  • LIKE: স্ট্রিং প্যাটার্ন ম্যাচিং করার জন্য ব্যবহৃত হয়।
  • IN: নির্দিষ্ট মানের মধ্যে ডেটা নির্বাচন করতে ব্যবহৃত হয়।
  • IS NULL: NULL মানের ডেটা চেক করার জন্য ব্যবহৃত হয়।

এই ফিল্টারিং কৌশলগুলি SQL কুয়েরি লেখার সময় ডেটাবেস থেকে নির্দিষ্ট ডেটা নির্বাচন করতে খুবই কার্যকর।

Content added By

SELECT, WHERE, এবং ORDER BY T-SQL (Transact-SQL) এর গুরুত্বপূর্ণ অংশ। এগুলি SQL স্টেটমেন্টগুলির মধ্যে ব্যবহৃত হয় ডেটা নির্বাচন (retrieving), শর্ত প্রয়োগ (filtering), এবং ফলাফল সাজানো (sorting) করতে।

নিচে প্রতিটি কমান্ডের বিস্তারিত ব্যবহার ব্যাখ্যা করা হলো:


১. SELECT

SELECT কমান্ড SQL-এ সবচেয়ে মৌলিক এবং গুরুত্বপূর্ণ কমান্ড, যা ডেটাবেস থেকে ডেটা নির্বাচন করতে ব্যবহৃত হয়। SELECT কমান্ডের মাধ্যমে আপনি টেবিল বা ভিউ থেকে ডেটা রিটার্ন করতে পারেন।

ব্যবহার:

SELECT column1, column2, ...
FROM table_name;
  • column1, column2, ...: এই কলামগুলি আপনি নির্বাচন করতে চান। আপনি এখানে একাধিক কলাম অথবা * ব্যবহার করে সব কলাম নির্বাচন করতে পারেন।
  • table_name: সেই টেবিলের নাম থেকে ডেটা নির্বাচন করতে হবে।

উদাহরণ:

SELECT Name, Age
FROM Employees;

এটি Employees টেবিল থেকে Name এবং Age কলামগুলির ডেটা নির্বাচন করবে।


২. WHERE

WHERE ক্লজ SQL-এ একটি শর্তভিত্তিক ফিল্টার প্রদান করে। এটি ব্যবহার করা হয় ডেটা নির্বাচন করার সময় কিছু নির্দিষ্ট শর্ত বা মান অনুযায়ী ডেটা ফিল্টার করতে।

ব্যবহার:

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • condition: একটি শর্ত যা এক বা একাধিক কলামের মানের ভিত্তিতে ডেটা ফিল্টার করবে।

উদাহরণ:

SELECT Name, Age
FROM Employees
WHERE Age > 30;

এটি Employees টেবিল থেকে Age কলামের মান 30 এর চেয়ে বড় এমন সারিগুলির Name এবং Age নির্বাচন করবে।

আপনি WHERE ক্লজে বিভিন্ন অপারেটর ব্যবহার করতে পারেন যেমন:

  • =, >, <, >=, <=, <> (বা !=), BETWEEN, IN, LIKE, AND, OR ইত্যাদি।

উদাহরণ:

SELECT Name, Age
FROM Employees
WHERE Age BETWEEN 25 AND 35;

এটি Age কলামের মান 25 থেকে 35 এর মধ্যে এমন সারিগুলির Name এবং Age নির্বাচন করবে।


৩. ORDER BY

ORDER BY কমান্ড SQL-এ ফলাফল সাজানোর জন্য ব্যবহৃত হয়। এটি ডেটাকে একটি নির্দিষ্ট কলাম বা একাধিক কলামের ভিত্তিতে সাজানোর সুবিধা দেয়। সাজানোর জন্য আপনি ASC (অ্যাসেনডিং, বৃদ্ধি) বা DESC (ডিসেনডিং, হ্রাস) ব্যবহার করতে পারেন।

ব্যবহার:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • column1, column2, ...: যেসব কলামের ভিত্তিতে সাজাতে চান।
  • ASC (অ্যাসেনডিং): ডেটাকে ছোট থেকে বড় সাজাবে (এটি ডিফল্ট)।
  • DESC (ডিসেনডিং): ডেটাকে বড় থেকে ছোট সাজাবে।

উদাহরণ:

SELECT Name, Age
FROM Employees
ORDER BY Age DESC;

এটি Employees টেবিল থেকে Age কলামের মান অনুসারে ফলাফলকে ডিসেনডিং (বড় থেকে ছোট) সাজাবে।

একাধিক কলামের ভিত্তিতে সাজানো:

SELECT Name, Age, Department
FROM Employees
ORDER BY Department ASC, Age DESC;

এটি প্রথমে Department কলামকে অ্যাসেনডিং (বাড়ানোর) ভাবে সাজাবে, এবং যদি দুটি Department একই হয়, তবে Age কলামের ভিত্তিতে ডিসেনডিং (হ্রাসের) অনুযায়ী সাজাবে।


সারাংশ

  1. SELECT: ডেটাবেস থেকে ডেটা নির্বাচন করতে ব্যবহৃত হয়।
    • উদাহরণ: SELECT * FROM Employees; — সমস্ত কলাম নির্বাচন করবে।
  2. WHERE: ডেটা নির্বাচনের সময় শর্ত যোগ করতে ব্যবহৃত হয়।
    • উদাহরণ: SELECT Name FROM Employees WHERE Age > 30;Age 30 এর বেশি এমন কর্মীদের Name কলাম নির্বাচন করবে।
  3. ORDER BY: ডেটাকে নির্দিষ্ট কলাম বা একাধিক কলামের ভিত্তিতে সাজাতে ব্যবহৃত হয়।
    • উদাহরণ: SELECT * FROM Employees ORDER BY Age ASC;Age কলামের মান অনুযায়ী বৃদ্ধি পদ্ধতিতে সাজাবে।

এগুলো T-SQL এর গুরুত্বপূর্ণ কমান্ড যা ডেটাবেস থেকে তথ্য নির্বাচন, ফিল্টারিং, এবং সাজানোর জন্য ব্যবহৃত হয়।

Content added By

JOIN T-SQL-এ একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়, যাতে একটি কোয়েরি দিয়ে একাধিক টেবিলের তথ্য একসাথে রিটার্ন করা যায়। T-SQL-এ প্রধানত চার ধরনের JOIN ব্যবহৃত হয়:

  1. INNER JOIN
  2. LEFT JOIN (LEFT OUTER JOIN)
  3. RIGHT JOIN (RIGHT OUTER JOIN)
  4. FULL OUTER JOIN

এখানে প্রতিটি JOIN এর বিস্তারিত আলোচনা করা হলো:


১. INNER JOIN

INNER JOIN দুইটি টেবিলের মধ্যে শুধুমাত্র সেই রেকর্ডগুলো রিটার্ন করে যেগুলি উভয় টেবিলের মধ্যে মিলে। অর্থাৎ, যেখানে দুটি টেবিলের মধ্যে একটি ম্যাচিং রেকর্ড থাকে, সেখানে ফলাফল দেখাবে।

উদাহরণ:

SELECT Employees.EmployeeID, Employees.Name, Orders.OrderID
FROM Employees
INNER JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID;
  • এই কোয়েরি Employees এবং Orders টেবিলের মধ্যে EmployeeID এর মানে ম্যাচ করে এমন রেকর্ডগুলো রিটার্ন করবে।
  • যদি কোন Employee এর সাথে কোনো Order না থাকে, তবে সেই Employee রেকর্ডটি ফলাফলে আসবে না।

২. LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN (বা LEFT OUTER JOIN) প্রথম টেবিলের সমস্ত রেকর্ড রিটার্ন করে এবং যেগুলি দ্বিতীয় টেবিলের সাথে ম্যাচ করে, সেই রেকর্ডগুলিও রিটার্ন করে। যদি দ্বিতীয় টেবিলের সাথে কোন ম্যাচিং রেকর্ড না থাকে, তবে দ্বিতীয় টেবিলের কলামগুলো NULL দেখাবে।

উদাহরণ:

SELECT Employees.EmployeeID, Employees.Name, Orders.OrderID
FROM Employees
LEFT JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID;
  • এই কোয়েরি Employees টেবিলের সমস্ত রেকর্ড রিটার্ন করবে, এবং যেখানে EmployeeID এর সাথে মিল আছে, সেখানে Orders টেবিলের তথ্যও দেখাবে।
  • যেসকল Employee এর সাথে কোন Order নেই, তাদের জন্য OrderID কলাম NULL দেখাবে।

৩. RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN (বা RIGHT OUTER JOIN) দ্বিতীয় টেবিলের সমস্ত রেকর্ড রিটার্ন করে এবং যেগুলি প্রথম টেবিলের সাথে ম্যাচ করে, সেই রেকর্ডগুলোও রিটার্ন করে। যদি প্রথম টেবিলের সাথে কোন ম্যাচিং রেকর্ড না থাকে, তবে প্রথম টেবিলের কলামগুলো NULL দেখাবে।

উদাহরণ:

SELECT Employees.EmployeeID, Employees.Name, Orders.OrderID
FROM Employees
RIGHT JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID;
  • এই কোয়েরি Orders টেবিলের সমস্ত রেকর্ড রিটার্ন করবে, এবং যেখানে EmployeeID এর সাথে মিল আছে, সেখানে Employees টেবিলের তথ্যও দেখাবে।
  • যেসকল Order এর সাথে কোন Employee নেই, তাদের জন্য EmployeeID এবং Name কলাম NULL দেখাবে।

৪. FULL OUTER JOIN

FULL OUTER JOIN দুটি টেবিলের সমস্ত রেকর্ড রিটার্ন করে, যেখানে মিল থাকে সেখানে তথ্য দেখায় এবং যেখানে মিল নেই সেখানে NULL দেখায়। এটি LEFT JOIN এবং RIGHT JOIN এর সমন্বয়।

উদাহরণ:

SELECT Employees.EmployeeID, Employees.Name, Orders.OrderID
FROM Employees
FULL OUTER JOIN Orders ON Employees.EmployeeID = Orders.EmployeeID;
  • এই কোয়েরি Employees এবং Orders টেবিলের সমস্ত রেকর্ড রিটার্ন করবে।
  • যেসকল Employee এর সাথে Order নেই, তাদের জন্য OrderID কলাম NULL হবে।
  • যেসকল Order এর সাথে Employee নেই, তাদের জন্য EmployeeID এবং Name কলাম NULL হবে।

সারাংশ:

JOIN টাইপবর্ণনা
INNER JOINউভয় টেবিলের মধ্যে মিল থাকা রেকর্ডগুলি রিটার্ন করে।
LEFT JOIN (LEFT OUTER JOIN)প্রথম টেবিলের সমস্ত রেকর্ড এবং মিল পাওয়া রেকর্ডগুলো রিটার্ন করে, অন্য টেবিলের কলামে NULL থাকে যদি মিল না থাকে।
RIGHT JOIN (RIGHT OUTER JOIN)দ্বিতীয় টেবিলের সমস্ত রেকর্ড এবং মিল পাওয়া রেকর্ডগুলো রিটার্ন করে, প্রথম টেবিলের কলামে NULL থাকে যদি মিল না থাকে।
FULL OUTER JOINউভয় টেবিলের সমস্ত রেকর্ড রিটার্ন করে, যেখানে মিল থাকে সেখানে তথ্য দেখায় এবং মিল না থাকলে NULL দেখায়।

JOIN বিভিন্ন টেবিলের মধ্যে সম্পর্ক তৈরি করতে এবং একত্রে ডেটা বের করার জন্য অত্যন্ত গুরুত্বপূর্ণ একটি টুল।

Content added By

Aggregate Functions T-SQL (Transact-SQL)-এ এমন ফাংশনগুলো যা একাধিক রেকর্ডের উপর কাজ করে এবং একটি একক মান রিটার্ন করে। এগুলি সাধারণত GROUP BY ক্লজের সাথে ব্যবহার করা হয়, তবে এগুলি SELECT স্টেটমেন্টে সরাসরি কোনো শর্ত (condition) ছাড়াও ব্যবহার করা যেতে পারে। নিচে T-SQL এর পাঁচটি প্রধান aggregate function (COUNT, SUM, AVG, MIN, MAX) সম্পর্কে বিস্তারিত ব্যাখ্যা দেওয়া হলো।


১. COUNT()

COUNT() ফাংশনটি একটি কলামে মোট কতটি রেকর্ড বা মান রয়েছে তা গুনে দেখানোর জন্য ব্যবহৃত হয়। এটি সংখ্যার হিসাব দেয়।

সঠিক ব্যবহার:

  • COUNT(*): সব রেকর্ড গননা করে।
  • COUNT(column_name): নির্দিষ্ট কলামে NULL বাদে মোট রেকর্ড গননা করে।

উদাহরণ:

-- সব রেকর্ড গননা
SELECT COUNT(*) FROM Employees;

-- নির্দিষ্ট কলামে NULL ছাড়া রেকর্ড গননা
SELECT COUNT(EmployeeID) FROM Employees;

আউটপুট:

  • COUNT(*): সমস্ত রেকর্ড গুনবে।
  • COUNT(EmployeeID): কলামে NULL ছাড়া মোট রেকর্ড গুনবে।

২. SUM()

SUM() ফাংশনটি একটি নির্দিষ্ট কলামে (যেমন: INT, DECIMAL, FLOAT) সব মান যোগ করে। এটি শুধুমাত্র সংখ্যা গুলি যোগ করতে ব্যবহৃত হয় এবং NULL মানগুলো উপেক্ষা করে।

উদাহরণ:

-- মোট বেতন হিসাব করা
SELECT SUM(Salary) FROM Employees;

আউটপুট:

  • সব Salary মান যোগ করে মোট বেতন রিটার্ন করবে।

৩. AVG()

AVG() ফাংশনটি একটি কলামের গড় (average) মান হিসাব করে। এটি সমস্ত সংখ্যার যোগফল করে এবং তা রেকর্ডের সংখ্যা দিয়ে ভাগ করে গড় বের করে। NULL মানগুলো উপেক্ষা করা হয়।

উদাহরণ:

-- গড় বেতন হিসাব করা
SELECT AVG(Salary) FROM Employees;

আউটপুট:

  • Salary কলামের গড় বেতন রিটার্ন করবে।

৪. MIN()

MIN() ফাংশনটি একটি কলামে সর্বনিম্ন মান (smallest value) রিটার্ন করে। এটি যেকোনো ধরনের ডেটা (যেমন: সংখ্যাত্মক, তারিখ, স্ট্রিং) নিতে পারে এবং সেই কলামে সবচেয়ে ছোট মান নির্বাচন করে।

উদাহরণ:

-- সর্বনিম্ন বেতন দেখানো
SELECT MIN(Salary) FROM Employees;

আউটপুট:

  • Salary কলামের সর্বনিম্ন বেতন রিটার্ন করবে।

৫. MAX()

MAX() ফাংশনটি একটি কলামে সর্বোচ্চ মান (largest value) রিটার্ন করে। এটি যেকোনো ধরনের ডেটা (যেমন: সংখ্যাত্মক, তারিখ, স্ট্রিং) নিতে পারে এবং সেই কলামে সবচেয়ে বড় মান নির্বাচন করে।

উদাহরণ:

-- সর্বোচ্চ বেতন দেখানো
SELECT MAX(Salary) FROM Employees;

আউটপুট:

  • Salary কলামের সর্বোচ্চ বেতন রিটার্ন করবে।

একসাথে ব্যবহার

এগুলি একসাথে ব্যবহার করেও বিভিন্ন ধরনের পরিসংখ্যান বের করা যেতে পারে। উদাহরণস্বরূপ:

SELECT 
    COUNT(*) AS TotalEmployees,
    SUM(Salary) AS TotalSalary,
    AVG(Salary) AS AverageSalary,
    MIN(Salary) AS MinimumSalary,
    MAX(Salary) AS MaximumSalary
FROM Employees;

আউটপুট:

  • TotalEmployees: মোট কর্মী সংখ্যা।
  • TotalSalary: মোট বেতন।
  • AverageSalary: গড় বেতন।
  • MinimumSalary: সর্বনিম্ন বেতন।
  • MaximumSalary: সর্বোচ্চ বেতন।

সারাংশ

Aggregate functions T-SQL এর শক্তিশালী টুল, যা একাধিক রেকর্ডের উপর গণনা, যোগ, গড়, সর্বনিম্ন এবং সর্বোচ্চ মান বের করার জন্য ব্যবহৃত হয়। এগুলি সাধারণত GROUP BY ক্লজের সাথে ব্যবহার করা হয় কিন্তু সরাসরি SELECT ক্লজেও ব্যবহৃত হতে পারে। COUNT(), SUM(), AVG(), MIN(), এবং MAX() হল T-SQL এর পাঁচটি মূল aggregate function।

Content added By

GROUP BY এবং HAVING SQL কুয়েরি ক্লজ দুটি ব্যবহৃত হয় একত্রে ডেটা গ্রুপিং এবং ফিল্টারিংয়ের জন্য। যেখানে GROUP BY ডেটাকে একটি নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করে এবং HAVING কন্ডিশন প্রয়োগ করে গ্রুপের উপর ফিল্টারিং করে।

১. GROUP BY কুয়েরি

GROUP BY কুয়েরি SQL তে ডেটা গ্রুপ করতে ব্যবহৃত হয়। এটি একাধিক রেকর্ডকে একটি নির্দিষ্ট কলামের মানের ভিত্তিতে গ্রুপ করে এবং গ্রুপে থাকা ডেটার উপর অ্যাগ্রিগেট ফাংশন (যেমন COUNT(), SUM(), AVG(), MAX(), MIN()) প্রয়োগ করে।

উদাহরণ:

ধরা যাক, আমাদের একটি Sales টেবিল রয়েছে যা বিক্রির তথ্য ধারণ করে। টেবিলের মধ্যে রয়েছে ProductID, SaleAmount, এবং SaleDate

-- Sales টেবিল থেকে প্রতিটি ProductID এর মোট বিক্রয় পরিমাণ বের করা
SELECT ProductID, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY ProductID;

এখানে, ProductID অনুযায়ী SaleAmount এর যোগফল (SUM) বের করা হচ্ছে। GROUP BY ProductID এর মাধ্যমে ডেটা প্রতিটি ProductID এর জন্য গ্রুপ করা হচ্ছে।


২. HAVING কুয়েরি

HAVING কুয়েরি ক্লজ GROUP BY এর পর ফিল্টারিং করতে ব্যবহৃত হয়। এটি সাধারণত WHERE কুয়েরি ক্লজের সাথে তুলনা করা হয়, কিন্তু WHERE কুয়েরি ক্লজ সাধারণত একক রেকর্ডের জন্য ফিল্টার করে, এবং HAVING গ্রুপের উপর ফিল্টার প্রয়োগ করে।

উদাহরণ:

-- Sales টেবিল থেকে এমন ProductID গুলি বের করা, যেগুলির মোট বিক্রয় পরিমাণ ১০০০-এর বেশি
SELECT ProductID, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY ProductID
HAVING SUM(SaleAmount) > 1000;

এখানে, GROUP BY ProductID দ্বারা প্রতিটি ProductID এর গ্রুপ তৈরি করা হয়েছে এবং HAVING SUM(SaleAmount) > 1000 শর্তটি প্রয়োগ করা হয়েছে, যাতে শুধুমাত্র সেগুলি দেখানো হয় যেখানে SaleAmount এর যোগফল ১০০০-এর বেশি।


GROUP BY এবং HAVING এর সাথে একত্রে ব্যবহার

একটি কুয়েরিতে GROUP BY এবং HAVING উভয়ই ব্যবহার করা হয়, যখন আপনি ডেটা গ্রুপ করতে চান এবং তারপরে গ্রুপে থাকা ডেটার উপর শর্তাবলী প্রয়োগ করতে চান।

উদাহরণ:

-- Sales টেবিল থেকে প্রতিটি ProductID এর মোট বিক্রয় পরিমাণ বের করা, যেখানে বিক্রয় পরিমাণ ১০০০ এর বেশি
SELECT ProductID, SUM(SaleAmount) AS TotalSales
FROM Sales
GROUP BY ProductID
HAVING SUM(SaleAmount) > 1000;

এটি পূর্বের উদাহরণের মতোই, যেখানে প্রথমে ProductID এর উপর গ্রুপিং করা হচ্ছে এবং পরে HAVING এর মাধ্যমে শর্ত দেওয়া হচ্ছে।


সারাংশ

  • GROUP BY কুয়েরি ডেটাকে একটি নির্দিষ্ট কলামের উপর গ্রুপ করে এবং অ্যাগ্রিগেট ফাংশন ব্যবহার করতে সাহায্য করে।
  • HAVING কুয়েরি গ্রুপ করা ডেটার উপর শর্ত প্রয়োগ করে, যা WHERE কুয়েরি ক্লজের মতো কাজ করে কিন্তু এটি গ্রুপের উপর ফিল্টার করে, একক রেকর্ডের উপর নয়।

GROUP BY এবং HAVING একত্রে ব্যবহৃত হলে এটি গ্রুপিং এবং শর্তের ভিত্তিতে ডেটা ফিল্টার করার একটি শক্তিশালী কৌশল তৈরি করে।

Content added By
Promotion

Are you sure to start over?

Loading...