2017-10-05 107 views
0

我想只显示前两个建筑物及其相应的平均会话价格。 这就是我现在所拥有的错误不是一个群组功能

SELECT BUILDINGLANE,SUM(SESSIONPRICE/COUNT(BUILDINGNO)) 
FROM BUILDING NATURAL JOIN CONFERENCESESSION 
GROUP BY BUILDINGLANE 
WHERE SUM(SESSIONPRICE/COUNT(BUILDINGNO)); 

,但我得到的错误“SQL命令不能正确地结束” 3线,但随后如果我结束第3行以分号,我得到这个新的错误“不一个单组功能“的第1行。林不知道我会出错哪里,我试图寻找这个,但我没有任何运气来解决这个问题。

任何帮助表示赞赏!

+0

Where子句中有表达无以伦比。 –

+0

&'在哪里**总是**在单个选择查询中位于'group by'之前。 SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY –

回答

0

您应该使用的Order by代替Where条款

SELECT * 
FROM (SELECT BUILDINGLANE, 
       Sum(intrPrice) AS avgPrice 
     FROM (SELECT BUILDINGLANE, 
         SESSIONPRICE/Count(BUILDINGNO) AS intrPrice 
       FROM BUILDING 
         NATURAL JOIN CONFERENCESESSION 
       GROUP BY BUILDINGLANE, 
          SESSIONPRICE) a 
     GROUP BY BUILDINGLANE 
     ORDER BY avgPrice DESC) b 
WHERE ROWNUM <= 2 
+0

是仍然给我同样的错误:/ ORA-00937:不是单组功能 00937. 00000 - 不是单组功能“ *原因: *行动: 错误在行:77列:8 – James

+0

@詹姆斯 - 检查更新的代码 –

+0

工作完美,谢谢! – James

0

尝试:

select * from(
    SELECT BUILDINGLANE,SUM(SESSIONPRICE)/COUNT(BUILDINGNO) 
    FROM BUILDING NATURAL JOIN CONFERENCESESSION 
    GROUP BY BUILDINGLANE, BUILDINGNO 
    Order by (SUM(SESSIONPRICE)/COUNT(BUILDINGNO)) desc 
) 
where rownum <= 2 
+0

是的,我仍然得到这个错误ORA-00937:不是单组功能 00937. 00000 - “不是一个单一组功能” *原因: *行动: 错误在行:76列:12。真的很困惑(你错过了括号顺便说一句) – James

+0

已经为你添加组 –

相关问题