2

私は分析関数を使っていくつかの例を試していますが、パーティションごとに異なるカウントを理解するためにSQLフィドルを作成しました。これが私のsqlfiddleです。

create table dummy (value1 varchar2(10),value2 varchar2(10));

insert into dummy values ('abc','abc1');
insert into dummy values ('abc','abc1');
insert into dummy values ('abc','abc2');
insert into dummy values ('def','abc1');
insert into dummy values ('ghi','abc2');
insert into dummy values ('xyz','abc3');
insert into dummy values ('xyz','abc3');

select value1,
       value2,
       count(distinct value2) over (partition by value1) as ValCount
from dummy

結果セットを見ると、3行目のvalcountは1であると予想されますが、代わりに2であり、その理由がわかりません。

4

2 に答える 2

2

abc(値1)には、2番目の列(abc1とabc2)に2つの異なる値しかありません。また、列1に分割されたcolumn2の異なる値を数えるので、実際に2を取得する必要があります。

于 2012-06-13T18:44:10.080 に答える
1

valcountは2である必要があります。

value1でパーティション化したため、カウントはそのコンテキスト内で実行されます。つまり、value1 = "abc"である結果のグループには、value2の2つの異なる値( "abc1"、 "abc2")があります。

于 2012-06-13T18:44:51.093 に答える