2

我正在尝试一些带有分析函数的示例,并且我创建了一个 sql fiddle 来理解一个 count distinct over partition by 子句。这是我的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

如果您查看结果集,我希望第三行的 valcount 为 1,而不是 2,我不确定为什么会这样。

4

2 回答 2

2

abc(值 1)在第二列(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 回答