Sql 如何在与ROUND()和AVG()相同的查询中使用COUNT?

Sql 如何在与ROUND()和AVG()相同的查询中使用COUNT?,sql,oracle,Sql,Oracle,我需要写一个查询,在这里我需要首先计算一家剧院的门票销售数量,然后计算每个剧院的平均门票销售数量,并将其四舍五入到小数点后两位,这些值必须按门票销售数量排序。 原则上,我想找出每家剧院的平均售票数量。 我尝试了很多不同的选择,但我有不同的错误。 当我尝试运行此操作时,出现以下错误: SQL错误:ORA-00937:没有单个组函数 我试图添加HAVING子句,但出现了另一个错误: SQL错误:ORA-00933:SQL命令未正确结束 我确信问题在于我正在尝试使用COUNT with ROUND()

我需要写一个查询,在这里我需要首先计算一家剧院的门票销售数量,然后计算每个剧院的平均门票销售数量,并将其四舍五入到小数点后两位,这些值必须按门票销售数量排序。 原则上,我想找出每家剧院的平均售票数量。 我尝试了很多不同的选择,但我有不同的错误。 当我尝试运行此操作时,出现以下错误:

SQL错误:ORA-00937:没有单个组函数

我试图添加HAVING子句,但出现了另一个错误:

SQL错误:ORA-00933:SQL命令未正确结束


我确信问题在于我正在尝试使用COUNT with ROUND()和AVG(),但我真的不知道在这一点上该怎么做,希望能得到任何帮助。

每场演出的平均门票数量将是总门票数量除以眼镜数量。一个非常简单的计算方法是:

SELECT s.id_theater,
       COUNT(*) / COUNT(DISTINCT id_spectacle) as average_tickets_theatre
FROM tickets t JOIN
     spectacles s
     ON  t.id_spectacle = s.id_spectacle
GROUP BY t.id_theater
ORDER BY average_tickets_theatre;
我将让您处理值的舍入


注意正确、明确、标准、可读的
JOIN
语法的使用。切勿在FROM子句中使用逗号。

请查看您的标签(问题下方)。Oracle还是SQL Server?为什么有Oracle SQL Developer标签?(很可能应该删除)。那么-为什么
子句?您没有解释在聚合后排除任何组的任何条件。我们应该忘记你问题中的那个评论吗?我删除了SQL Server标记,因为你显然在使用OracleTru,你在做什么?请解释问题,并提供样本数据和所需输出。计数(*)的平均值-标量值-没有意义。
SELECT s.id_theater,
       COUNT(*) / COUNT(DISTINCT id_spectacle) as average_tickets_theatre
FROM tickets t JOIN
     spectacles s
     ON  t.id_spectacle = s.id_spectacle
GROUP BY t.id_theater
ORDER BY average_tickets_theatre;