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 中的单组组函数的主要内容,如果未能解决你的问题,请参考以下文章