2

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

4

2 に答える 2

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(*)のみを使用する必要があります。Oracle の集約関数のほとんどは、節を追加することでウィンドウ関数に変換でき、over()節の必要がなくなりGROUP BYます。

于 2012-08-16T07:11:05.847 に答える
1

エラーが発生した場合は、以下を試してください。

select title,count(*)  from table  where relation_key=10 group by title,relation_key
于 2012-08-16T07:13:37.920 に答える