sql cost to avg cost of all missing expression错误

时间:2017-03-25 16:59:07

标签: sql oracle

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 个答案:

答案 0 :(得分: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子句中使用了两个子查询。您的结果将是所有音乐会的每种类型的音乐会,成本和常数平均成本以及所有音乐会的总成本。我使用了这两个,因为你的描述并没有真正符合你的SQL语句,所以我对你实际操作的内容感到困惑。

无论如何,这些子查询执行自己的select语句,返回1x1表,从而重复选择的每一行的值。它不是最有效的代码,因此请注意,如果您尝试将其用于数千行。