Sql 需要分组依据的子查询,不带单行函数
根据我的理解,依赖于一个或多个聚合函数以及至少一个单行函数的查询需要放置单行函数 在GROUPBY子句中,这在总体上是有意义的 然而,我正在处理一个在线资源中的问题,遇到了图片中的问题,我的逻辑是,为什么我回答它执行成功但输出不正确,子查询是一个只有聚合函数的查询,让我相信它不需要分组,为什么子查询中需要一个group by?您可以轻松测试: 错误是: ORA-00978:不带分组依据的嵌套分组函数Sql 需要分组依据的子查询,不带单行函数,sql,oracle,oracle12c,Sql,Oracle,Oracle12c,根据我的理解,依赖于一个或多个聚合函数以及至少一个单行函数的查询需要放置单行函数 在GROUPBY子句中,这在总体上是有意义的 然而,我正在处理一个在线资源中的问题,遇到了图片中的问题,我的逻辑是,为什么我回答它执行成功但输出不正确,子查询是一个只有聚合函数的查询,让我相信它不需要分组,为什么子查询中需要一个group by?您可以轻松测试: 错误是: ORA-00978:不带分组依据的嵌套分组函数 因此,嵌套的GROUPBY似乎需要Gordon已清除的GROUPBY,“嵌套聚合需要GROUP
因此,嵌套的GROUPBY似乎需要Gordon已清除的
GROUPBY
,“嵌套聚合需要GROUPBY子句”。如果我们把查询分为2个部分,第一部分在给定特定值的情况下是很好的。p>
例如:
在此链接中运行查询:
::
但是如果我们把两个聚合函数组合起来,我们会得到一个错误
select max(count(PROD_CATEGORY_ID)) from SH.PRODUCTS ; --> Throws ORA-00978
select max(count(PROD_CATEGORY_ID)) from SH.PRODUCTS
group by PROD_CATEGORY_ID; -->Gives max count of prod_cat
给出了最终结果:
select count(*), PROD_CATEGORY_ID from SH.PRODUCTS
group by PROD_CATEGORY_ID
having count(*)=(select max(count(*)) from SH.PRODUCTS group by PROD_CATEGORY_ID);
链接中的好例子:
select max(count(PROD_CATEGORY_ID)) from SH.PRODUCTS ; --> Throws ORA-00978
select max(count(PROD_CATEGORY_ID)) from SH.PRODUCTS
group by PROD_CATEGORY_ID; -->Gives max count of prod_cat
select count(*), PROD_CATEGORY_ID from SH.PRODUCTS
group by PROD_CATEGORY_ID
having count(*)=(select max(count(*)) from SH.PRODUCTS group by PROD_CATEGORY_ID);