2017-03-25 35 views
-3
SQL> SELECT CONCERTS.TYPEOFCONCERT, CONCERTS.COSTOFEACHCONCERT 
    2 FROM CUSTOMER 
    3 INNER JOIN BOOKING 
    4 ON BOOKING.CUSTOMERID = CUSTOMER.CUSTOMERID 
    5 INNER JOIN EVENT 
    6 ON EVENT.EVENTID=BOOKING.EVENTID 
    7 INNER JOIN CONCERTS 
    8 ON CONCERTS.CONCERTID=EVENT.CONCERTID 
    9 (
10 SELECT AVG(COSTOFEACHCONCERT) FROM CONCERTS AS TOTALCOSTOFCONCERTS 
11 ); 
SELECT AVG(COSTOFEACHCONCERT) FROM CONCERTS AS TOTALCOSTOFCONCERTS 
* 
ERROR at line 10: 
ORA-00936: missing expression 

すべてのコンサートの平均費用を調べ、すべてのコンサートの費用と平均費用の差を表示しようとすると、エラーが発生します。誰かが私がどこに間違っているのかを教えてくれますか?すべてのコンプレッションの平均コストを計算する平均コストを

+1

9行目のコードは何ですか?10 2 11? .. このコードは間違った場所にあります。あなたはそれを削除する必要があります(TOCを使用してTOTALCOSTOFCONCERTSからコンビニエンス(COSTOFEACHCONCERT)を選択してください)。 – scaisEdge

答えて

0

最後の投稿と同様に、グループ化機能の使い方が混乱しています。以下を試してください。

SELECT CONCERTS.TYPEOFCONCERT, CONCERTS.COSTOFEACHCONCERT, 
(SELECT AVG(COSTOFEACHCONCERT) FROM CONCERTS) AS AVERAGECOSTOFCONCERTS, 
(SELECT SUM(COSTOFEACHCONCERT) FROM CONCERTS) AS TOTALCOSTOFCONCERTS 
FROM CUSTOMER 
INNER JOIN BOOKING ON BOOKING.CUSTOMERID = CUSTOMER.CUSTOMERID 
INNER JOIN EVENT ON EVENT.EVENTID=BOOKING.EVENTID 
INNER JOIN CONCERTS ON CONCERTS.CONCERTID=EVENT.CONCERTID 

これは、select句で2つのサブクエリを使用します。あなたの結果は、コンサートの種類、コスト、定数すべてのコンサートの平均コストとすべてのコンサートの合計コストになります。あなたの記述があなたのSQL文と実際には一致しなかったので、私はそれらの両方を使用しました。だから、あなたが実際に何をしているのか混乱しました。

とにかく、これらのサブクエリは1x1テーブルを返す独自のselect文を実行するため、選択されたすべての行の値が繰り返されます。最も効率的なコードではないので、何千もの行に使用しようとすると注意が必要です。