Database Tutorials SQL এ Aggregate Functions এবং Grouping গাইড ও নোট

514

SQL-এ Aggregate Functions হল এমন ফাংশন যা এক বা একাধিক রেকর্ডের উপর গণনা বা সাঙ্গন (aggregation) সম্পাদন করে। এগুলি সাধারণত GROUP BY ক্লজের সাথে ব্যবহার করা হয়, যা ডেটাবেসের রেকর্ডগুলোকে গ্রুপ করার জন্য ব্যবহৃত হয়। এগুলি খুবই উপকারী যখন আপনাকে ডেটাবেসের ডাটা থেকে কোন ধরনের সারাংশ বা সামগ্রিক মান বের করতে হয়, যেমন মোট, গড়, সর্বোচ্চ, সর্বনিম্ন ইত্যাদি।

১. Aggregate Functions:

SQL-এ কিছু জনপ্রিয় Aggregate Functions নিম্নলিখিত:

1. COUNT()

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

Syntax:

SELECT COUNT(column_name) FROM table_name;

উদাহরণ:

SELECT COUNT(*) FROM employees;

এটি employees টেবিলের মোট রেকর্ড (rows) সংখ্যা প্রদান করবে।

2. SUM()

SUM() ফাংশনটি একটি কলামের মোট যোগফল প্রদান করে, সাধারণত সংখ্যাগত (numeric) কলামে ব্যবহৃত হয়।

Syntax:

SELECT SUM(column_name) FROM table_name;

উদাহরণ:

SELECT SUM(salary) FROM employees;

এটি employees টেবিলের salary কলামের মোট যোগফল (total sum) প্রদান করবে।

3. AVG()

AVG() ফাংশনটি একটি কলামের গড় (average) মান প্রদান করে।

Syntax:

SELECT AVG(column_name) FROM table_name;

উদাহরণ:

SELECT AVG(salary) FROM employees;

এটি employees টেবিলের salary কলামের গড় প্রদান করবে।

4. MAX()

MAX() ফাংশনটি একটি কলামের সর্বোচ্চ মান প্রদান করে।

Syntax:

SELECT MAX(column_name) FROM table_name;

উদাহরণ:

SELECT MAX(salary) FROM employees;

এটি employees টেবিলের salary কলামের সর্বোচ্চ মান প্রদান করবে।

5. MIN()

MIN() ফাংশনটি একটি কলামের সর্বনিম্ন মান প্রদান করে।

Syntax:

SELECT MIN(column_name) FROM table_name;

উদাহরণ:

SELECT MIN(salary) FROM employees;

এটি employees টেবিলের salary কলামের সর্বনিম্ন মান প্রদান করবে।


২. GROUP BY ক্লজ

GROUP BY SQL এর একটি শক্তিশালী কনসেপ্ট যা একাধিক রেকর্ডকে একটি গ্রুপে ভাগ করে। এটি সাধারণত Aggregate Functions এর সাথে ব্যবহৃত হয়। এর মাধ্যমে আমরা নির্দিষ্ট কলামের ভিত্তিতে রেকর্ডগুলোকে গ্রুপিং করতে পারি এবং তারপর প্রতিটি গ্রুপের উপর Aggregate Functions প্রয়োগ করতে পারি।

GROUP BY-র ব্যবহার:

Syntax:

SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name;

উদাহরণ:

ধরা যাক, আমাদের employees টেবিল রয়েছে, যেখানে department এবং salary কলাম রয়েছে। আমরা প্রতিটি বিভাগ (department) অনুযায়ী salary এর গড় (average) বের করতে চাই।

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

এটি department অনুযায়ী salary এর গড় প্রদান করবে।

GROUP BY এবং HAVING ক্লজ:

কখনো কখনো আমাদের একটি নির্দিষ্ট শর্ত বা ফিল্টার প্রয়োগ করতে হতে পারে গ্রুপের উপর, যেমন একটি বিশেষ গড় বা মানের উপরে। এই ক্ষেত্রে HAVING ক্লজ ব্যবহার করা হয়।

Syntax:

SELECT column_name, AGGREGATE_FUNCTION(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;

উদাহরণ:

ধরা যাক, আমরা এমন বিভাগগুলি দেখতে চাই যেখানে গড় বেতন (average salary) ৫০,০০০-এর বেশি। তাহলে SQL কোডটি হবে:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;

এটি শুধুমাত্র তাদের বিভাগ দেখাবে, যেখানে গড় বেতন ৫০,০০০ এর বেশি।


৩. Aggregate Functions এবং Grouping এর মধ্যে পার্থক্য:

  • Aggregate Functions: এগুলি একক কলামের উপর গণনা বা সাঙ্গন (aggregation) সম্পাদন করে, যেমন গড়, যোগফল, সংখ্যা, সর্বোচ্চ/সর্বনিম্ন মান ইত্যাদি।
  • GROUP BY: এটি ডেটাবেসের রেকর্ডগুলোকে গ্রুপ করে, এবং গ্রুপের মধ্যে Aggregate Functions প্রয়োগ করতে ব্যবহৃত হয়।

৪. Multiple Aggregate Functions

একই কুয়েরিতে একাধিক Aggregate Function ব্যবহার করা সম্ভব। উদাহরণস্বরূপ:

SELECT department, COUNT(*) AS total_employees, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

এটি প্রতিটি বিভাগের জন্য মোট কর্মচারীর সংখ্যা এবং গড় বেতন প্রদান করবে।


সারাংশ

SQL এর Aggregate Functions এবং GROUP BY এর মাধ্যমে ডেটাবেস থেকে গাণিতিক পরিসংখ্যান এবং সংক্ষেপিত তথ্য সহজে পাওয়া যায়। এগুলি ব্যবহার করে আপনি ডেটা বিশ্লেষণ এবং রিপোর্টিং কাজগুলো আরও কার্যকরভাবে করতে পারবেন।

Content added By

Aggregate Functions (COUNT, SUM, AVG, MAX, MIN)

404

Aggregate Functions SQL-এ এমন ফাংশন যা ডেটাবেসের একাধিক রেকর্ড থেকে একটি একক ফলাফল তৈরি করে। এগুলি সাধারণত ডেটা বিশ্লেষণ এবং সংক্ষিপ্তসার তৈরি করার জন্য ব্যবহৃত হয়। SQL এ পাঁচটি প্রধান Aggregate Function রয়েছে: COUNT, SUM, AVG, MAX, এবং MIN

এগুলো সাধারণত GROUP BY ক্লজের সাথে ব্যবহৃত হয়, তবে SELECT স্টেটমেন্টে একক রেকর্ডের জন্যও ব্যবহার করা যেতে পারে।


১. COUNT() - মোট রেকর্ডের সংখ্যা নির্ণয়

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

উদাহরণ:

-- কর্মচারীদের মোট সংখ্যা বের করা
SELECT COUNT(*) FROM employees;

এটি employees টেবিলের মোট রেকর্ড (যতগুলো রেকর্ড রয়েছে) গণনা করবে।

আরেকটি উদাহরণ, যেখানে নির্দিষ্ট শর্তে সংখ্যার হিসাব করা হচ্ছে:

-- 'Software Developer' পদে কর্মরত কর্মচারীদের সংখ্যা
SELECT COUNT(*) FROM employees WHERE position = 'Software Developer';

২. SUM() - সংখ্যা যোগফল নির্ণয়

SUM() ফাংশন একটি নির্দিষ্ট কলামে সকল মানের যোগফল বের করতে ব্যবহৃত হয়। সাধারণত এটি অর্থনৈতিক বা পরিমাণগত তথ্য বিশ্লেষণের জন্য ব্যবহৃত হয়।

উদাহরণ:

-- সব কর্মচারীর মোট বেতন যোগফল বের করা
SELECT SUM(salary) FROM employees;

এটি employees টেবিলের সব কর্মচারীর salary কলামের যোগফল বের করবে।


৩. AVG() - গড় মান বের করা

AVG() ফাংশন একটি কলামের গড় মান বের করতে ব্যবহৃত হয়। এটি সাধারণত গড় বেতন, গড় স্কোর ইত্যাদি গণনা করতে ব্যবহৃত হয়।

উদাহরণ:

-- কর্মচারীদের গড় বেতন বের করা
SELECT AVG(salary) FROM employees;

এটি employees টেবিলের কর্মচারীদের বেতন (salary) কলামের গড় মান বের করবে।


৪. MAX() - সর্বোচ্চ মান নির্ণয়

MAX() ফাংশন একটি নির্দিষ্ট কলামের সর্বোচ্চ মান বের করতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি সবচেয়ে বড় মানটি নির্ধারণ করতে পারেন, যেমন সর্বোচ্চ বেতন বা সর্বোচ্চ স্কোর

উদাহরণ:

-- সর্বোচ্চ বেতন বের করা
SELECT MAX(salary) FROM employees;

এটি employees টেবিলের সর্বোচ্চ বেতন বের করবে।


৫. MIN() - সর্বনিম্ন মান নির্ণয়

MIN() ফাংশন একটি নির্দিষ্ট কলামের সর্বনিম্ন মান বের করতে ব্যবহৃত হয়। এটি সাধারণত সর্বনিম্ন বেতন, সর্বনিম্ন স্কোর ইত্যাদি বের করার জন্য ব্যবহৃত হয়।

উদাহরণ:

-- সর্বনিম্ন বেতন বের করা
SELECT MIN(salary) FROM employees;

এটি employees টেবিলের সর্বনিম্ন বেতন বের করবে।


Aggregate Functions এর সাথে GROUP BY ব্যবহার

Aggregate Functions এর সাথে GROUP BY ক্লজ ব্যবহার করে ডেটাকে গ্রুপ আকারে ভাগ করা যায় এবং প্রতিটি গ্রুপের জন্য aggregate ফলাফল বের করা যায়। উদাহরণস্বরূপ, আপনি যদি কর্মচারীদের বেতন গ্রুপ করে তার গড় বেতন বের করতে চান:

উদাহরণ:

-- প্রতিটি পদের জন্য গড় বেতন বের করা
SELECT position, AVG(salary) 
FROM employees
GROUP BY position;

এটি employees টেবিলের প্রতিটি পদের জন্য গড় বেতন বের করবে।


Aggregate Functions এবং HAVING ক্লজ

আপনি HAVING ক্লজ ব্যবহার করে GROUP BY এর পর ফিল্টারও করতে পারেন। উদাহরণস্বরূপ, যদি আপনি শুধুমাত্র গড় বেতন ৫০,০০০ টাকার বেশি এমন পদের তথ্য চান:

উদাহরণ:

-- গড় বেতন ৫০,০০০ এর বেশি এমন পদের তালিকা
SELECT position, AVG(salary)
FROM employees
GROUP BY position
HAVING AVG(salary) > 50000;

এটি এমন পদের জন্য গড় বেতন ৫০,০০০ এর বেশি হওয়া অবস্থায় তালিকা প্রদান করবে।


উপসংহার

SQL-এর Aggregate Functions (COUNT, SUM, AVG, MAX, MIN) অত্যন্ত গুরুত্বপূর্ণ টুলস, যা ডেটা বিশ্লেষণ, প্রতিবেদন তৈরি এবং পরিসংখ্যানগত তথ্য উপস্থাপন করতে সাহায্য করে। এগুলির মাধ্যমে আপনি ডেটাবেসে থাকা তথ্যকে সংক্ষেপে এবং অর্থপূর্ণভাবে বিশ্লেষণ করতে পারবেন।

Content added By

GROUP BY এবং HAVING Clause এর ব্যবহার

502

SQL এ GROUP BY এবং HAVING ক্লজ দুটি খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি এগ্রিগেট ফাংশন (যেমন: COUNT, SUM, AVG, MAX, MIN) ব্যবহার করেন এবং একই ধরনের ডেটাকে গ্রুপ করতে চান। এই ক্লজ দুটি ডেটাকে গ্রুপ করে এবং পরবর্তীতে সেগুলোর ওপর নির্দিষ্ট শর্ত প্রয়োগ করতে সহায়তা করে।


GROUP BY Clause

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

GROUP BY এর মূল উদ্দেশ্য:

  • একাধিক রেকর্ডকে একটি নির্দিষ্ট কলাম বা কলামগুলোর মান অনুযায়ী গ্রুপ করা।
  • প্রতিটি গ্রুপের ওপর এগ্রিগেট ফাংশন প্রয়োগ করা (যেমন, COUNT, SUM, AVG ইত্যাদি)।

GROUP BY Syntax:

SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1;

উদাহরণ ১: COUNT ব্যবহার করে গ্রুপিং

ধরা যাক, আমাদের orders নামক একটি টেবিল রয়েছে, যেখানে বিভিন্ন গ্রাহকের অর্ডারের তথ্য আছে এবং আমরা জানতে চাই, প্রতিটি গ্রাহক কতটি অর্ডার দিয়েছে।

SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id;

এই কুয়েরি orders টেবিল থেকে customer_id এর ভিত্তিতে গ্রুপিং করবে এবং প্রতিটি গ্রাহকের মোট অর্ডারের সংখ্যা দেখাবে।


HAVING Clause

HAVING ক্লজ GROUP BY ক্লজের সাথে ব্যবহার করা হয় এবং এটি GROUP BY-এর পরবর্তী ফিল্টারিং অপারেশন হিসেবে কাজ করে। যেখানে WHERE ক্লজ সাধারণত রেকর্ডগুলির সাথে কাজ করে, HAVING ক্লজ গ্রুপগুলির সাথে কাজ করে। HAVING এর মাধ্যমে আপনি GROUP BY এর পরবর্তী গ্রুপ করা ডেটার ওপর শর্ত প্রয়োগ করতে পারেন।

HAVING Syntax:

SELECT column1, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1
HAVING condition;

উদাহরণ ২: HAVING ব্যবহার করে গ্রুপের উপর শর্ত প্রয়োগ

ধরা যাক, আমরা আগের কুয়েরি ব্যবহার করে প্রতিটি গ্রাহকের অর্ডারের সংখ্যা বের করেছি, তবে আমরা শুধু সেই গ্রাহকদের দেখতে চাই, যাদের মোট অর্ডারের সংখ্যা ১০ এর বেশি। এ জন্য HAVING ব্যবহার করা হবে।

SELECT customer_id, COUNT(order_id) AS total_orders
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) > 10;

এই কুয়েরি customer_id এর ভিত্তিতে গ্রুপ করবে এবং শুধুমাত্র সেই গ্রাহকদের দেখাবে যাদের মোট অর্ডারের সংখ্যা ১০ এর বেশি।


GROUP BY এবং HAVING এর মধ্যে পার্থক্য:

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

উদাহরণ ৩: SUM এবং HAVING এর সমন্বয়

ধরা যাক, sales টেবিলটি রয়েছে, যেখানে প্রতিটি বিক্রির তথ্য সংরক্ষিত থাকে, এবং আমরা জানতে চাই, কোন পণ্যের বিক্রির মোট পরিমাণ ১০,০০০-এর বেশি।

SELECT product_id, SUM(sale_amount) AS total_sales
FROM sales
GROUP BY product_id
HAVING SUM(sale_amount) > 10000;

এই কুয়েরি প্রথমে product_id অনুযায়ী গ্রুপ করবে এবং তারপর সেই পণ্যগুলোর মোট বিক্রির পরিমাণ ১০,০০০ এর বেশি হলে তা প্রদর্শন করবে।


সারাংশ:

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

SQL এ GROUP BY এবং HAVING ক্লজের সঠিক ব্যবহার ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরি করার ক্ষেত্রে অত্যন্ত কার্যকরী।

Content added By

Complex Aggregation Query লেখা

372

SQL এ Aggregation Functions যেমন COUNT(), SUM(), AVG(), MAX(), এবং MIN() ব্যবহার করে ডেটার উপর বিভিন্ন ধরনের সমষ্টিগত গণনা করা যায়। যখন এসব ফাংশনকে একত্রে, শর্ত বা গ্রুপিংয়ের সাথে ব্যবহার করা হয়, তখন সেটি একটি Complex Aggregation Query হয়। এই ধরনের কোয়েরি সাধারণত বৃহত্তর ডেটা সেটের বিশ্লেষণ বা প্রতিবেদন তৈরি করতে ব্যবহৃত হয়।

এখানে আমরা দেখবো Complex Aggregation Query কীভাবে লেখা যায় বিভিন্ন ফাংশন ও শর্তাবলী (যেমন: GROUP BY, HAVING, JOIN) ব্যবহার করে।


Complex Aggregation Query এর সিনট্যাক্স:

SELECT column1, aggregation_function(column2), ...
FROM table_name
WHERE condition
GROUP BY column1
HAVING aggregation_condition
ORDER BY column1;
  • aggregation_function(): যে অ্যানালিটিক্যাল ফাংশনটি প্রয়োগ করা হবে, যেমন SUM(), COUNT(), AVG(), ইত্যাদি।
  • GROUP BY: ডেটা গ্রুপ করার জন্য ব্যবহার করা হয়।
  • HAVING: গ্রুপের পরে শর্ত প্রদান করা হয় (এটি WHERE থেকে আলাদা, কারণ WHERE শুধুমাত্র রো লেভেল ফিল্টারিং করতে ব্যবহৃত হয়)।
  • ORDER BY: ফলাফলকে নির্দিষ্ট একটি কলাম অনুযায়ী সাজানোর জন্য।

Complex Aggregation Query এর উদাহরণ:

ধরা যাক, আমাদের একটি sales টেবিল রয়েছে যেখানে নিম্নলিখিত কলামগুলো আছে:

  • product_id: পণ্যের আইডি
  • sale_date: বিক্রির তারিখ
  • quantity: বিক্রি হওয়া পণ্যের পরিমাণ
  • price: পণ্যের মূল্য

Query 1: একটি পণ্য প্রতি মোট বিক্রির পরিমাণ এবং আয় (SUM ও COUNT ব্যবহার করে)

আমরা চাই প্রতিটি পণ্যের জন্য মোট বিক্রি হওয়া পরিমাণ (Quantity) এবং মোট আয় (Total Revenue) দেখাতে, যেখানে আয়ের হিসাব হবে quantity * price

SELECT product_id,
       SUM(quantity) AS total_quantity,
       SUM(quantity * price) AS total_revenue
FROM sales
GROUP BY product_id
ORDER BY total_revenue DESC;
  • SUM(quantity) দ্বারা প্রতিটি পণ্যের মোট বিক্রি হওয়া পরিমাণ গণনা করা হয়েছে।
  • SUM(quantity * price) দ্বারা প্রতিটি পণ্যের মোট আয় (revenue) হিসাব করা হয়েছে।
  • GROUP BY product_id দ্বারা আমরা প্রতিটি পণ্য অনুযায়ী ডেটা গ্রুপ করেছি।
  • ORDER BY total_revenue DESC দ্বারা সর্বোচ্চ আয় পণ্য প্রথমে দেখানো হবে।

Query 2: নির্দিষ্ট তারিখের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন বিক্রি হওয়া পণ্য (MAX, MIN ব্যবহার করে)

এখন, আমরা যদি একটি নির্দিষ্ট তারিখের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন বিক্রি হওয়া পণ্যের সংখ্যা দেখতে চাই, তবে আমরা MAX() এবং MIN() ফাংশন ব্যবহার করবো:

SELECT product_id,
       MAX(quantity) AS max_quantity,
       MIN(quantity) AS min_quantity
FROM sales
WHERE sale_date BETWEEN '2024-01-01' AND '2024-12-31'
GROUP BY product_id
HAVING MAX(quantity) > 100
ORDER BY max_quantity DESC;
  • MAX(quantity) সর্বোচ্চ বিক্রি হওয়া পরিমাণ প্রদান করবে, এবং MIN(quantity) সর্বনিম্ন বিক্রি হওয়া পরিমাণ প্রদান করবে।
  • WHERE sale_date BETWEEN '2024-01-01' AND '2024-12-31' দ্বারা ২০২৪ সালের মধ্যে বিক্রির রেকর্ড ফিল্টার করা হয়েছে।
  • HAVING MAX(quantity) > 100 শর্ত দেয় যে শুধুমাত্র সেই পণ্যগুলো দেখাবে যার সর্বোচ্চ বিক্রির পরিমাণ ১০০ এর বেশি।
  • ORDER BY max_quantity DESC দ্বারা সর্বোচ্চ বিক্রি হওয়া পণ্য শীর্ষে দেখাবে।

Query 3: একাধিক টেবিল থেকে ডেটা নিয়ে Complex Aggregation Query (JOIN এবং GROUP BY ব্যবহার করে)

ধরা যাক, আমাদের দুটি টেবিল আছে: orders এবং customersorders টেবিলের মধ্যে customer_id, order_total এবং customers টেবিলে customer_id, customer_name রয়েছে। আমরা চাই দেখাতে যে, কোন গ্রাহক কত বার অর্ডার করেছেন এবং মোট কত টাকা খরচ করেছেন।

SELECT c.customer_name,
       COUNT(o.order_id) AS total_orders,
       SUM(o.order_total) AS total_spent
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY c.customer_name
HAVING SUM(o.order_total) > 500
ORDER BY total_spent DESC;
  • COUNT(o.order_id) দ্বারা প্রতিটি গ্রাহকের মোট অর্ডারের সংখ্যা গোনা হচ্ছে।
  • SUM(o.order_total) দ্বারা প্রতিটি গ্রাহকের মোট খরচ হিসাব করা হচ্ছে।
  • JOIN orders o ON c.customer_id = o.customer_id দ্বারা গ্রাহক ও অর্ডার টেবিল একত্রিত করা হয়েছে।
  • HAVING SUM(o.order_total) > 500 দ্বারা শর্ত দেওয়া হয়েছে যে, শুধুমাত্র সেই গ্রাহকরা দেখানো হবে যারা ৫০০ টাকার বেশি খরচ করেছেন।

Conclusion:

Complex Aggregation Query লেখার সময়, আপনি বিভিন্ন SQL Aggregation Functions, GROUP BY, HAVING, এবং JOIN ব্যবহার করে শক্তিশালী ডেটাবেস বিশ্লেষণ করতে পারেন। এসব ফাংশন একত্রে ব্যবহার করে আপনি সহজেই ব্যবসায়িক সিদ্ধান্ত গ্রহণের জন্য প্রয়োজনীয় রিপোর্ট এবং বিশ্লেষণ তৈরি করতে পারেন।

Content added By

Filter এবং Aggregation এর মধ্যে পার্থক্য

289

Filter এবং Aggregation SQL-এ দুটি গুরুত্বপূর্ণ অপারেশন, তবে তাদের কাজের ধরন এবং উদ্দেশ্য একে অপরের থেকে ভিন্ন।

এগুলো কীভাবে কাজ করে এবং কীভাবে পার্থক্য করা হয়, তা নিচে ব্যাখ্যা করা হলো:


১. Filter (ফিল্টার)

Filter হল ডেটার একটি সাবসেট নির্বাচন করার প্রক্রিয়া, যেখানে নির্দিষ্ট শর্ত (condition) পূর্ণ করার ভিত্তিতে ডেটাকে ফিল্টার বা সিলেক্ট করা হয়।

  • ফিল্টারিং সাধারণত WHERE ক্লজ ব্যবহার করে করা হয়।
  • এটি আপনাকে ডেটাবেস থেকে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা বেছে নিতে সাহায্য করে, যেমন: নির্দিষ্ট মান, রেঞ্জ, অথবা যেকোনো অন্য কন্ডিশন।
  • ফিল্টারিং অপারেশন সাধারণত কোনো সিঙ্গেল ভ্যালু (এবং কখনও কখনও একাধিক ভ্যালু) রিটার্ন করে, কিন্তু এটা কোনো যোগফল, গড় বা সর্বোচ্চ মান ইত্যাদি তৈরি করে না।

উদাহরণ:

ধরা যাক, আপনার একটি employees টেবিল আছে এবং আপনি কেবলমাত্র এমন কর্মচারীদের দেখতে চান যাদের বয়স ৩০ বছরের বেশি।

SELECT name, age
FROM employees
WHERE age > 30;

এই কিউরি শুধুমাত্র সেই কর্মচারীদের নাম এবং বয়স রিটার্ন করবে যাদের বয়স ৩০ বছরের বেশি। এটি একটি ফিল্টার অপারেশন


২. Aggregation (এগ্রেগেশন)

Aggregation হল একাধিক মানের উপর গণনা বা হিসাব করা, যেমন মোট, গড়, সর্বোচ্চ, সর্বনিম্ন, বা কাউন্ট।

  • এগ্রেগেশন সাধারণত Aggregate Functions (যেমন: COUNT(), SUM(), AVG(), MAX(), MIN()) ব্যবহার করে করা হয়।
  • এটি একাধিক রেকর্ড বা সারির উপর গণনা করে এবং সাধারণত একক একটি মান প্রদান করে।
  • Aggregation অপারেশনকে সাধারণত GROUP BY ক্লজের সাথে ব্যবহার করা হয়, যাতে একাধিক সারির উপর গ্রুপিং করতে পারেন এবং প্রতিটি গ্রুপের জন্য একটি একক মান গণনা করা যায়।

উদাহরণ:

ধরা যাক, আপনি একটি sales টেবিল থেকে মোট বিক্রির পরিমাণ দেখতে চান:

SELECT SUM(amount) AS total_sales
FROM sales;

এখানে SUM() একটি এগ্রেগেশন ফাংশন ব্যবহার করা হয়েছে, যা sales টেবিলের সমস্ত amount কলামের মান যোগফল রিটার্ন করবে। এটি একটি এগ্রেগেশন অপারেশন


Filter এবং Aggregation এর মধ্যে প্রধান পার্থক্য

পার্থক্যFilterAggregation
কাজের ধরননির্দিষ্ট শর্ত পূর্ণ করা ডেটার একটি সাবসেট নির্বাচন করা।একাধিক ডেটা মানের উপর গণনা বা হিসাব করা।
অপারেশনসাধারণত WHERE ক্লজ দিয়ে ডেটা ফিল্টার করা হয়।সাধারণত COUNT(), SUM(), AVG(), MAX(), MIN() ফাংশন ব্যবহার করা হয়।
আউটপুটনির্বাচিত কলামের নির্দিষ্ট ডেটা (সারির) আনা হয়।একটি একক মান (যেমন, গড়, মোট, সর্বোচ্চ) রিটার্ন করা হয়।
উদাহরণSELECT * FROM employees WHERE age > 30;SELECT AVG(salary) FROM employees;

Filter এবং Aggregation একত্রে ব্যবহার:

একই কুইরিতে আপনি ফিল্টার এবং এগ্রেগেশন দুটি একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি শুধুমাত্র ৩০ বছরের বেশি বয়সী কর্মচারীদের গড় স্যালারি দেখতে চাইলে:

SELECT AVG(salary) AS avg_salary
FROM employees
WHERE age > 30;

এখানে প্রথমে WHERE ক্লজের মাধ্যমে ৩০ বছরের বেশি বয়সী কর্মচারীদের ফিল্টার করা হয়েছে এবং তারপর AVG() ফাংশনের মাধ্যমে তাদের গড় স্যালারি গণনা করা হয়েছে।


এভাবে, Filter এবং Aggregation একে অপরের সম্পূরক, এবং আপনি SQL কুইরিতে সেগুলোকে একত্রে ব্যবহার করতে পারেন যাতে ডেটা বিশ্লেষণের জন্য আরও কার্যকর ফলাফল পাওয়া যায়।

Content added By
Promotion

Are you sure to start over?

Loading...