簡體   English   中英

在SQL Server 2005中使用AVG聚合函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM