PDA

View Full Version : حرفه ای: استفاده از توابع aggregate برای ماکسیمم و مینیمم و...



milad_khosravi
سه شنبه 24 فروردین 1389, 12:36 عصر
سلام من یه سوال دارم یه راه حل خودم واسش نوشتم اما یکم مشکل دارم در ادامه توضیح میدم :
سوال من اینه که تو یه پایگاه داده مثلا northwind میخام بیشترین میانگین فروش کارمندان رو پیدا کنم و اینم راه حلش:


declare @myTable table (avarage real)
insert into @mytable SELECT avg(Freight)AS Expr1
FROM Orders
GROUP BY EmployeeID

select max(avarage) from @mytable


که یک متغیر جدولی گرفته شده , و میانگین فروش کارمندان محاسبه شده و بعد ازش ماکسیمم گرفتم حالا میخام مشخصات اون کارمند رو بیارم تو خروجی
اما اگر متغیر جدولی من بیشتر از یه ستون داشته باشه از توابع جمعی مث ماکس نمی شه استفاده کرد
و فک کنم کلن روش دیگری داره که بیام از جدول مربوطه با خود جدول یه ارتباط بازتابی ایجاد کنم و بعد با یه مقایسه تو خروجی بیارم اما به نظر شما چه راه حلی درسته؟

سوال- مشخصات کارمندی رو بدهید که بیشترین میانگین فروش را در بین کارمندان دارد؟
کلن سوال بالا مسئله من هست ممنون میشم اگر جوابش رو واسم بزارین :خجالت:

محمد سلیم آبادی
سه شنبه 24 فروردین 1389, 13:46 عصر
;WITH CTE AS
(SELECT EmployeeID, AVG(Freight) AS A
FROM Orders
GROUP BY EmployeeID)
SELECT E.*
FROM CTE
INNER JOIN Employees AS E
ON E.EmployeeID = CTE.EmployeeID
WHERE CTE.A = (SELECT MAX(A)
FROM CTE)