ORA-00937: 不是 oracle 中的单组组函数

Posted

技术标签:

【中文标题】ORA-00937: 不是 oracle 中的单组组函数【英文标题】:ORA-00937: not a single-group group function in oracle 【发布时间】:2012-08-16 07:05:15 【问题描述】:

我的表格包含id,title,relation_key。我想获得count(*) 以及相应relation_key 列的标题。

我的表包含以下数据:

id           title          relation_key
55           title1111         10
56           title2222         10
57           MytitleVVV        20
58           MytitlleXXX       20

我试过了:

select title,count(*)  from table  where relation_key=10 group by title

但它只返回 1 行。我想要relation_key=10 的两个标题记录

【问题讨论】:

它对我来说很好sqlfiddle.com/#!4/934d7/3 【参考方案1】:

你可能想要一些类似的东西:

select title, count(*) over (partition by relation_key)
from table 
where relation_key = 10

这样的结果将产生:

title     | count
----------+------
title1111 | 2
title2222 | 2

请注意,您不能选择不属于 Oracle 中 GROUP BY 子句的字段(就像在大多数其他数据库中一样)。

作为一般经验法则,如果您不想对数据进行分组,则应避免分组,而只需使用aggregate functions,例如count(*)。 Oracle 的大多数聚合函数都可以通过添加over() 子句转换为window functions,从而无需GROUP BY 子句。

【讨论】:

感谢 Lukas 的回答。【参考方案2】:

如果您遇到错误,请尝试以下操作。

select title,count(*)  from table  where relation_key=10 group by title,relation_key

【讨论】:

在这种情况下,count(*) 将为每条记录生成 1。我不确定这是否是 OP 的意图,因为他们似乎只想按 relation_key 计算...

以上是关于ORA-00937: 不是 oracle 中的单组组函数的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00937: "不是单组群函数"

关于 ORA-00937不是单组分组函数的解决办法

ORA-00937: 不是单组组函数错误

ORA-00937: 不是 oracle 中的单组组函数

带有子查询的ORACLE单组功能错误[关闭]

包以失败状态结束。 ORA-00937 没那么容易