2012-08-16 209 views
2

我有表格,列爲id,title,relation_key。我想獲得count(*)以及相應的relation_key列的標題。ORA-00937:在oracle中不是單一羣組功能

我的表包含以下數據:

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

它對我來說工作正常http://www.sqlfiddle.com/#!4/934d7/3 – jaychapani 2012-08-16 07:31:39

回答

5

你可能想沿着這些路線的東西:

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

這樣做的結果會產生:

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

請注意,你不能選擇不領域Oracle中的GROUP BY子句的一部分(與其他大多數數據庫一樣)。

作爲一個一般的經驗法則,你應該避免分組,如果你真的不想要組數據,但只使用aggregate functionscount(*)。通過添加over()子句,可以將大多數Oracle的聚合函數轉換爲window functions,從而不需要GROUP BY子句。

+0

同意你的答案。多行.. – 2012-08-16 07:20:37

+0

感謝盧卡斯你的答案。 – user1565699 2012-08-16 08:22:06

1

如果您遇到錯誤,請嘗試以下操作。

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

在這種情況下,count(*)'會爲每條記錄產生1。我不確定這是否是OP的意圖,因爲他們似乎只想用'relation_key'來計算...... – 2012-08-16 07:17:44