2013-04-22 3 views
-1

Ниже мой запрос:Список клиентов, которые приобрели заказы> Усредненный оплаченный заказ

select c.cust_lname, c.cust_fname, o.amount 
from CUSTOMER c, orders o 
where o.amount > 
(select AVG (o.amount) 
from orders o 
group by order_num 
having o.amount > AVG(o.amount)); 

Почему это не работает?

+1

Ну, что же означает «не работает»? –

+0

Моя ошибка, а не работа означает не получение правильного выхода. Я предполагаю, что я должен был быть более конкретным –

ответ

2

, как вы пишете запрос, он будет выглядеть так:

select c.cust_lname, c.cust_fname, o.amount 
from CUSTOMER c join 
    orders o 
    on c.customerId = o.customerId 
where o.amount > (select AVG (o.amount) 
        from orders o) 

Обратите внимание, что вам нужно соединить вместе две таблицы, чтобы получить то, что вы хотите.

+0

Ошибка при получении: Msg 102, уровень 15, состояние 1, строка 4 Неверный синтаксис около 'c'. –

+1

@JeffOrris. , , Вам нужно подключить таблицы по правильному полю. Замените «CustomerId» всем подходящим полем для подключения этих двух таблиц. –

+3

Сообщение об ошибке связано с другим неаккуратным непроверенным ответом. Где ключевое слово «ON» Гордон? –

0

Вы перепробовали его. Возьмите предложение о наличии из вашего подзапроса.

+0

Получение ошибки: Subquery возвратил более 1 значения ... –

+1

@JeffOrris вам также нужно удалить «группу by» из подзапроса (при условии, что вы хотите усреднить все заказы) – vlad

+3

, но пользователь все равно будет получать слишком много строк, потому что они используют старомодный «помогите мне улучшить мои шансы получить картографический продукт». –

-1
select c.cust_lname, c.cust_fname, o.amount 
from CUSTOMER c, orders o 
where o.amount > 
(select AVG (amount) from orders); 
+0

Получение ПУТЕМ ко многим результатам. –

+0

@JeffOrris это кажется правильным на основе вашего вопроса. позаботиться о том, почему слишком много результатов? – vlad

+1

Да, как говорит Гордон Линофф - нужно присоединиться к столам –

Смежные вопросы