ORA-00937:在oracle中不是单组组功能

时间:2012-08-16 07:05:15

标签: sql oracle group-by

我的表格列为idtitlerelation_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

的两个标题记录

2 个答案:

答案 0 :(得分:5)

你可能想要这些内容:

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

结果会产生:

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

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

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

答案 1 :(得分:1)

如果您收到错误,请尝试使用以下内容。

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