2016-04-07 3 views
1

サブクエリを使用して、平均価格よりも高い価格で販売されているアイテムを見つけ出す必要がありますが、最後にエラーが発生し続けています。近くに私は正しい方向にバンプを得ることができます。 何が起きているかを知っている人ですか?平均集計の問題を含むサブクエリ

私は現在、これを持っている:

select oi.OrderID 
    , ItemID 
    , oi.price 
from ORDERS o join ORDER_ITEM oi 
    on o.OrderID = oi.OrderID 
where oi.price > 
(select avg(oi.price) from ORDER_ITEM) 
+0

はあなたが取得しているか、エラーメッセージを教えなければなりません。 –

+0

これは良い質問だと思います。 –

答えて

1

あなたは凝集の外部参照を持っています。サブクエリのために異なる表の別名を使用します。

select oi.OrderID, ItemID, oi.price 
from ORDERS o join 
    ORDER_ITEM oi 
    on o.OrderID = oi.OrderID 
where oi.price > (select avg(oi2.price) from ORDER_ITEM oi2); 
-----------------------------^ 

あなたのバージョンが参照からpriceの平均値を取っています。一部のデータベース(特にSQL Serverなど)ではこれを許可していません。私も参加することに注意してください

は余計ようだ:

select oi.OrderID, oi.ItemID, oi.price 
from ORDER_ITEM oi 
where oi.price > (select avg(oi2.price) from ORDER_ITEM oi2);