我正在尝试使用分析函数的一些示例,并且我已经创建了一个sql小提琴来理解不同于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,我不确定为什么会这样。
答案 0 :(得分:2)
abc(值1)在第二列(abc1和abc2)上只有2个不同的值,并且由于你计算了在第1列上划分的column2上的不同值,你应该确实得到2
答案 1 :(得分:1)
valcount应为2。
您已按value1进行分区,因此计数在该上下文中执行。也就是说,在value1 =“abc”的结果组中,有2个不同的value2值(“abc1”,“abc2”)。