[英]using AVG aggregate function in sql server 2005
我有一個“訂單”表:
ID CustomerID Freight
1 VINET 32.38
2 TOMPS 11.61
. . .
. . .
. . .
我只想選擇運費超過平均水平的那些customerID !!
SELECT CustomerID FROM Orders WHERE CustomerID IN(SELECT CustomerID,AVG(Freight) AVGFreight FROM Orders Group By CustomerID )
我知道到這里為止,但是我該如何比較運費和平均運費呢? 請幫我謝謝
我假設一個客戶每個都有1條記錄。
從dbo.Orders中選擇客戶ID運費> =(從dbo.Orders中選擇@AvgFreight = AVG(Freight))
我不確定這是否行得通。 試試吧。
支持@marc_s的答案,因為我以他的答復為依據。
SELECT CustomerID
FROM dbo.Orders
WHERE AVG(Freight) >= (SELECT AVG(Freight) FROM dbo.Orders)
GROUP BY CustomerID
這個怎么樣:
SELECT CustomerID
FROM dbo.Orders
WHERE Freight >= (SELECT AVG(Freight) FROM dbo.Orders)
GROUP BY CustomerID
您選擇了所有客戶,這些客戶的運費均大於表中所有運費的平均值。
CREATE TABLE Orders(
ID int,
CustomerId varchar(10),
Freight money
);
INSERT INTO Orders Values(1,'VINET',10);
INSERT INTO Orders values(2,'VINET',10);
INSERT INTO Orders values(3,'TOMPS',12);
INSERT INTO Orders values(4,'TOMPS',11);
顯示平均值:
Select CustomerId,avg(Freight)AvgFreight
from Orders
group by customerId
| CustomerId | AvgFreight | |------------+------------| | TOMPS | 11.50 | | VINET | 10.00 | |------------+------------|
將運費與平均值進行比較:
Select Orders.CustomerId
from Orders,
(Select CustomerId,avg(Freight)AvgFreight
from Orders
Group by customerId)t
Where Orders.Freight > t.AvgFreight
And Orders.CustomerId = t.Customerid
| CustomerId | |------------| | TOMPS | |------------|
使用HAVING
子句。
SELECT CustomerID
FROM Orders
GROUP BY CustomerID
HAVING AVG(Freight) > (SELECT AVG(Freight) FROM Orders)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.