توابع جمعآوری پیشرفته در SQL
توابع جمعآوری پیشرفته در SQL مجموعهای از توابع قدرتمند هستند که برای تجزیه و تحلیل دادهها و استخراج اطلاعات مفید از مجموعه دادههای بزرگ استفاده میشوند. این توابع فراتر از توابع ساده جمعآوری مانند SUM
، AVG
و COUNT
عمل میکنند و امکان محاسبات پیچیدهتر و انعطافپذیرتر را فراهم میکنند.
برخی از توابع جمعآوری پیشرفته رایج:
- GROUP BY: برای گروه بندی دادهها بر اساس یک یا چند ستون و محاسبه مقادیر جداگانه برای هر گروه.
- HAVING: برای فیلتر کردن گروهها بر اساس مقادیر محاسبه شده توسط توابع جمعآوری.
- WINDOW FUNCTIONS: برای محاسبه مقادیر برای هر رکورد در یک گروه، با در نظر گرفتن رکوردهای قبلی و بعدی.
- CORRELATED SUBQUERIES: برای مقایسه مقادیر یک رکورد با مقادیر رکوردهای دیگر در همان جدول.
مثال:
فرض کنید میخواهیم میانگین حقوق کارمندانی که در هر دپارتمان کار میکنند را محاسبه کنیم و سپس دپارتمانهایی را که میانگین حقوق آنها بالاتر از میانگین کل حقوق شرکت است، پیدا کنیم.
راهحل:
SQL
SELECT Department, AVG(Salary) AS AverageSalary
FROM Employees
GROUP BY Department
HAVING AverageSalary > (
SELECT AVG(Salary)
FROM Employees
);
توضیح:
- این پرس و جو از دو تابع جمعآوری پیشرفته استفاده میکند:
GROUP BY
: برای گروه بندی کارمندان بر اساس دپارتمان.HAVING
: برای فیلتر کردن دپارتمانهایی که میانگین حقوق آنها از میانگین کل حقوق شرکت بیشتر است.
- تابع
AVG
در داخلGROUP BY
میانگین حقوق را برای هر دپارتمان محاسبه میکند. - تابع
AVG
در داخلHAVING
میانگین کل حقوق شرکت را محاسبه میکند. - فقط دپارتمانهایی که میانگین حقوق آنها از میانگین کل حقوق شرکت بیشتر است، نمایش داده میشوند.
کاربرد:
توابع جمعآوری پیشرفته در سناریوهای مختلفی از جمله موارد زیر کاربرد دارند:
- تجزیه و تحلیل دادههای فروش:
- برای مثال، میتوانید از توابع جمعآوری پیشرفته برای محاسبه میانگین فروش، مجموع فروش و سود هر محصول در هر منطقه استفاده کنید.
- تجزیه و تحلیل دادههای مشتری:
- برای مثال، میتوانید از توابع جمعآوری پیشرفته برای محاسبه میانگین سن، جنسیت و محل سکونت مشتریان در هر گروه سنی استفاده کنید.
- تجزیه و تحلیل دادههای علمی:
- برای مثال، میتوانید از توابع جمعآوری پیشرفته برای محاسبه میانگین، واریانس و انحراف معیار دادههای آزمایشگاهی استفاده کنید.
نکات:
- توابع جمعآوری پیشرفته میتوانند پیچیده باشند.
- قبل از استفاده از آنها، درک نحوه عملکرد آنها و نوع دادههای خروجی آنها مهم است.
- برای اطلاعات بیشتر در مورد توابع جمعآوری پیشرفته، میتوانید به مستندات SQL یا منابع آموزشی آنلاین مراجعه کنید.
مثالهای دیگر:
- یافتن ۱۰ محصولی که در ۳ ماه گذشته بیشترین فروش را داشتهاند:
SQL
SELECT ProductID, ProductName, SUM(SalesQuantity) AS TotalSales
FROM Sales
WHERE SalesDate > DATEADD(MONTH, -۳, GETDATE())
GROUP BY ProductID
ORDER BY TotalSales DESC
LIMIT ۱۰;
- یافتن مشتریانی که در هر دو سال ۲۰۲۲ و ۲۰۲۳ خرید کردهاند:
SQL
SELECT CustomerID, Name
FROM Customers
WHERE EXISTS (
SELECT *
FROM Sales
WHERE CustomerID = Customers.CustomerID
AND SalesDate BETWEEN '۲۰۲۲-۰۱-۰۱' AND '۲۰۲۲-۱۲-۳۱'
)
AND EXISTS (
SELECT *
FROM Sales
WHERE CustomerID = Customers.CustomerID
AND SalesDate BETWEEN '۲۰۲۳-۰۱-۰۱' AND '۲۰۲۳-۱۲-۳۱'
);