2017-03-25 12 views
1

こんにちは私のクエリで何が問題なのかを判断するのに問題があります。すべての列の平均を計算して出力差を計算します。

イベント名と無関係のすべてのイベントの平均コストを出力しようとしています。しかし、私のクエリを処理するときに、接続はイベント名と平均の間で行われているようです。私は、クエリが、その平均にではなく、その名前に関連する各イベントの平均コストを生成していると信じています。一度私は平均を持っている私は平均原価を超えてコストがかかるイベントだけを表示したいと思います。

問合せ:

SELECT Event_Name AS 'Event Name' 
       ,ROUND(Event_Cost) AS 'Event Cost' 
       ,ROUND(AVG(Event_Cost)) AS 'Average Cost Of Events' 
       ,ROUND(Event_Cost - AVG(Event_Cost)) AS 'Amount Over Average £' 
FROM Event 
WHERE Event_Cost > (SELECT AVG(Event_Cost) FROM Event) 
GROUP BY Event_Name; 

私はそれが私が行方不明です本当に簡単なものであると確信しています。事前に感謝します

答えて

0

クエリに2つの問題があります。最初のものは、event_nameを選択しているので、そのレベルで平均が計算されます。もう1つの問題は、同じテーブルの同じ時刻に集計されたままで、合計でEvent_Cost列を使用していることです。これは不可能です。

あなたは内側のクエリから集計値を取得する必要がありますし、クロスは

私は私の答えを編集した
SELECT t1.Event_Name AS 'Event Name', 
     ROUND(Event_Cost) AS 'Event Cost', 
     ROUND(t2.aver) AS 'Average Cost Of Events', 
     ROUND(Event_Cost - t2.aver) AS 'Amount Over Average £' 
FROM Event t1 
CROSS JOIN 
     (
      SELECT AVG(Event_cost) as aver 
      FROM Event 
     ) t2 
WHERE t1.Event_Cost > t2.aver; 
+0

この、最初のバージョンは、別の質問:) –

+0

awwwwに答えたように、あなたの最初のテーブルとそれに参加すること私は内側の選択をしようとしましたが、私は最初のテーブルにエイリアスを与えませんでした。あなたに助けてくれてありがとう。 –

関連する問題