Использование агрегатной функции AVG в SQL Server 2005 - PullRequest
0 голосов
/ 21 июня 2010

У меня есть одна таблица "заказов":

ID  CustomerID  Freight
1      VINET      32.38
2      TOMPS      11.61
.        .          .
.        .          . 
.        .          .

Я хочу выбрать только те идентификаторы клиентов, у которых груз больше среднего !!Как я могу сравнить груз со средним! ??пожалуйста, помогите мне спасибо

Ответы [ 4 ]

1 голос
/ 21 июня 2010

Я предполагаю, что у клиента будет по 1 записи.

ВЫБЕРИТЕ CustomerID ОТ dbo.Orders ГДЕ Фрахт> = (ВЫБЕРИТЕ @AvgFreight = AVG (Фрахт) ОТ dbo.Orders)

Я не уверен, сработает ли это. Попробуй.
Ответ Upvote @ marc_s, поскольку я основываюсь на его ответе.

SELECT CustomerID
FROM dbo.Orders 
WHERE AVG(Freight) >= (SELECT AVG(Freight) FROM dbo.Orders)
GROUP BY CustomerID
0 голосов
/ 24 июня 2015

Использование HAVING предложения.

SELECT CustomerID
FROM Orders 
GROUP BY CustomerID 
HAVING AVG(Freight) > (SELECT AVG(Freight) FROM Orders)
0 голосов
/ 24 июня 2015
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 | |------------|

0 голосов
/ 21 июня 2010

Как насчет этого:

SELECT CustomerID 
FROM dbo.Orders 
WHERE Freight >= (SELECT AVG(Freight) FROM dbo.Orders)
GROUP BY CustomerID

Вы выбираете своих клиентов, у каждого из которых стоимость фрахта превышает среднюю стоимость всех фрахтов в таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...