در مورد توابع Aggregate در SQL چه میدانید؟
توابع Aggregate در SQL برای محاسبه مقادیر تجمیعی مانند تعداد، مجموع، میانگین، کمترین و بیشترین دادهها استفاده میشوند.
در مورد توابع Aggregate در SQL چه میدانید؟
در پایگاههای داده، حجم زیادی از اطلاعات ذخیره میشود و معمولاً کاربران و مدیران سیستم نیاز دارند گزارشها و تحلیلهای مختلفی از این دادهها استخراج کنند.
برای مثال ممکن است بخواهیم مجموع فروش یک ماه را محاسبه کنیم، میانگین حقوق کارکنان را به دست آوریم، تعداد مشتریان را بشماریم یا بیشترین و کمترین مقدار یک فیلد را پیدا کنیم.
انجام این محاسبات با استفاده از توابع Aggregate در SQL بسیار ساده و سریع امکانپذیر است.
توابع Aggregate یا توابع تجمعی، گروهی از توابع داخلی SQL هستند که روی مجموعهای از رکوردها اعمال میشوند و در نهایت یک مقدار واحد را برمیگردانند. این توابع نقش بسیار مهمی در گزارشگیری، تحلیل دادهها و تهیه آمار از اطلاعات موجود در پایگاه داده دارند.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
⇐همین حالا شروع کنید و به دنیای دادهها بپیوندید!
تابع Aggregate چیست؟
توابع Aggregate مجموعهای از دادهها را دریافت کرده و نتیجهای واحد تولید میکنند.
برای مثال:
- محاسبه مجموع فروش
- شمارش تعداد کاربران
- پیدا کردن بیشترین حقوق
- محاسبه میانگین نمرات
این توابع روی چندین سطر اجرا میشوند اما فقط یک مقدار خروجی تولید میکنند.
مهمترین توابع Aggregate در SQL
پنج تابع اصلی Aggregate عبارتاند از:
-
()COUNT
-
()SUM
-
()AVG
-
()MAX
-
()MIN
این توابع تقریباً در تمامی سیستمهای مدیریت پایگاه داده مانند SQL Server، MySQL، PostgreSQL و Oracle پشتیبانی میشوند.
تابع COUNT
تابع COUNT برای شمارش تعداد رکوردها استفاده میشود.
مثال
فرض کنید جدول زیر وجود دارد:
Employees
| Id | Name |
| 1 | Ali |
| 2 | Sara |
| 3 | Reza |
برای شمارش تعداد کارکنان:
SELECT COUNT(*)
FROM Employees;
نتیجه:
3
COUNT روی یک ستون
SELECT COUNT(Name)
FROM Employees;
این دستور فقط مقادیر غیر NULL را شمارش میکند.
COUNT DISTINCT
برای شمارش مقادیر یکتا:
SELECT COUNT(DISTINCT City)
FROM Customers;
مثال:
| City |
| Tehran |
| Tehran |
| Shiraz |
نتیجه:
2
زیرا فقط دو شهر متفاوت وجود دارد.
تابع SUM
تابع SUM برای محاسبه مجموع مقادیر عددی استفاده میشود.
مثال
جدول فروش:
| Product | Amount |
| A | 100 |
| B | 200 |
| C | 300 |
دستور:
SELECT SUM(Amount)
FROM Sales;
نتیجه:
600
استفاده همراه شرط
SELECT SUM(Amount)
FROM Sales
WHERE Amount > 100;
نتیجه:
500
تابع AVG
AVG میانگین مقادیر عددی را محاسبه میکند.
مثال
جدول نمرات:
| Student | Score |
| Ali | 18 |
| Sara | 20 |
| Reza | 16 |
دستور:
SELECT AVG(Score)
FROM Students;
نتیجه:
18
میانگین حقوق کارکنان
SELECT AVG(Salary)
FROM Employees;
تابع MAX
تابع MAX بیشترین مقدار را برمیگرداند.
مثال
SELECT MAX(Salary)
FROM Employees;
نتیجه:
50000000
بیشترین قیمت محصول
SELECT MAX(Price)
FROM Products;
تابع MIN
تابع MIN کمترین مقدار را برمیگرداند.
مثال
SELECT MIN(Salary)
FROM Employees;
ارزانترین محصول
SELECT MIN(Price)
FROM Products;
کار با GROUP BY
قدرت واقعی توابع Aggregate زمانی مشخص میشود که همراه GROUP BY استفاده شوند.
مثال
جدول فروش:
| Category | Amount |
| Mobile | 100 |
| Mobile | 200 |
| Laptop | 300 |
| Laptop | 400 |
میخواهیم مجموع فروش هر دسته را ببینیم.
SELECT
Category,
SUM(Amount)
FROM Sales
GROUP BY Category;
نتیجه:
| Category | Total |
| Mobile | 300 |
| Laptop | 700 |
AVG همراه GROUP BY
SELECT
Department,
AVG(Salary)
FROM Employees
GROUP BY Department;
نتیجه:
میانگین حقوق هر بخش محاسبه میشود.
COUNT همراه GROUP BY
SELECT
City,
COUNT(*)
FROM Customers
GROUP BY City;
تعداد مشتریان هر شهر نمایش داده میشود.
استفاده از HAVING
گاهی لازم است پس از گروهبندی، دادهها را فیلتر کنیم.
برای این کار از HAVING استفاده میشود.
مثال
SELECT
Department,
AVG(Salary)
FROM Employees
GROUP BY Department
HAVING AVG(Salary) > 30000000;
فقط بخشهایی نمایش داده میشوند که میانگین حقوق آنها بیشتر از 30 میلیون باشد.
تفاوت WHERE و HAVING در SQL
-
WHERE
قبل از گروه بندی اجرا می شود.
SELECT *
FROM Employees
WHERE Salary > 10000000;
-
HAVING
بعد از گروهبندی اجرا میشود.
SELECT Department,
AVG(Salary)
FROM Employees
GROUP BY Department
HAVING AVG(Salary) > 10000000;
نادیده گرفتن NULL
اکثر توابع Aggregate مقادیر NULL را در محاسبات لحاظ نمیکنند.
مثال:
| Salary |
| 1000 |
| 2000 |
| NULL |
دستور:
SELECT AVG(Salary)
FROM Employees;
نتیجه:
1500
NULL در محاسبه شرکت نمیکند.
استفاده از چند Aggregate همزمان
میتوان چندین تابع Aggregate را در یک Query استفاده کرد.
SELECT
COUNT(*) AS TotalEmployees,
AVG(Salary) AS AverageSalary,
MAX(Salary) AS HighestSalary,
MIN(Salary) AS LowestSalary
FROM Employees;
نتیجه یک گزارش کامل از اطلاعات حقوق کارکنان خواهد بود.
Aggregate روی تاریخ
توابع MAX و MIN روی تاریخ نیز قابل استفاده هستند.
جدیدترین سفارش
SELECT MAX(OrderDate)
FROM Orders;
قدیمیترین سفارش
SELECT MIN(OrderDate)
FROM Orders;
Aggregate و Subquery
یافتن کارمند با بیشترین حقوق
SELECT *
FROM Employees
WHERE Salary =
(
SELECT MAX(Salary)
FROM Employees
);
یافتن محصول با کمترین قیمت
SELECT *
FROM Products
WHERE Price =
(
SELECT MIN(Price)
FROM Products
);
Aggregate و CASE
شمارش کارکنان فعال
SELECT
COUNT(
CASE
WHEN IsActive = 1
THEN 1
END
)
FROM Employees;
مجموع فروش موفق
SELECT
SUM(
CASE
WHEN Status='Success'
THEN Amount
ELSE 0
END
)
FROM Orders;
کاربردهای عملی توابع Aggregate در SQL
-
گزارش فروش
SELECT SUM(TotalPrice)
FROM Orders;
-
تعداد سفارشات
SELECT COUNT(*)
FROM Orders;
-
میانگین خرید مشتریان
SELECT AVG(TotalPrice)
FROM Orders;
-
بیشترین مبلغ سفارش
SELECT MAX(TotalPrice)
FROM Orders;
-
کمترین مبلغ سفارش
SELECT MIN(TotalPrice)
FROM Orders;

مزایای استفاده از Aggregate Functions
-
افزایش سرعت تحلیل دادهها
بدون نیاز به پردازش سمت برنامه میتوان نتایج را مستقیماً از SQL دریافت کرد. -
کاهش حجم داده انتقالی
به جای ارسال هزاران رکورد، فقط یک نتیجه نهایی ارسال میشود. -
مناسب برای گزارشگیری
تقریباً تمامی گزارشهای مدیریتی از توابع Aggregate استفاده میکنند. -
سادگی استفاده
با چند خط SQL میتوان محاسبات پیچیده را انجام داد.
اشتباهات رایج توابع Aggregate در SQL
-
فراموش کردن GROUP BY
دستور زیر خطا تولید میکند:
SELECT
Department,
AVG(Salary)
FROM Employees;
باید بنویسیم:
SELECT
Department,
AVG(Salary)
FROM Employees
GROUP BY Department;
-
استفاده اشتباه از WHERE
دستور زیر اشتباه است:
SELECT
Department,
AVG(Salary)
FROM Employees
GROUP BY Department
WHERE AVG(Salary)>1000;
باید از HAVING استفاده شود:
SELECT
Department,
AVG(Salary)
FROM Employees
GROUP BY Department
HAVING AVG(Salary)>1000;
عملکرد توابع Aggregate در SQL Server
SQL Server برای اجرای توابع Aggregate از الگوریتمهای بهینه استفاده میکند و در صورت وجود Index مناسب میتواند نتایج را با سرعت بسیار بالا محاسبه کند.
در جداول بزرگ بهتر است:
-
Index مناسب تعریف شود.
-
از DISTINCT غیرضروری استفاده نشود.
-
Queryها بهینه نوشته شوند.
-
از Execution Plan برای بررسی عملکرد استفاده شود.
جمعبندی
توابع Aggregate در SQL یکی از مهمترین ابزارهای تحلیل و گزارشگیری دادهها هستند.
توابعی مانند COUNT، SUM، AVG، MAX و MIN به شما امکان میدهند اطلاعات ارزشمندی را از میان حجم زیادی از دادهها استخراج کنید.
این توابع در کنار GROUP BY و HAVING قدرت بسیار زیادی برای تهیه گزارشهای مدیریتی، مالی، آماری و تحلیلی فراهم میکنند.
یادگیری و تسلط بر توابع Aggregate برای هر توسعهدهنده SQL و مدیر پایگاه داده ضروری است، زیرا بخش بزرگی از پردازشهای آماری و گزارشگیری در پروژههای واقعی بر پایه همین توابع انجام میشود.



کاربران ما
شما هم نظرتون با ما دریاره “در مورد توابع Aggregate در SQL چه میدانید؟” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید