2012-06-13 50 views
2

我尝试了解析函数的一些例子,并且我创建了一个sql小提琴来理解不同分区上的子句计数。这是我的sqlfiddleSQL计数和不同和分区

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

valcount应该不是1?因为对于value1 abc,只有一个abc2? – cableload

+0

是的..你说得对..我想我想得太多了..谢谢 – cableload

回答

2

ABC(值1)有(ABC1和ABC2)在第二列只有2个不同的值,因为你算分区在第1列上COLUMN2不同值,你确实应该得到2

1

的VALCOUNT应2.

您已经按值1进行分区,因此计数在该上下文中执行。也就是说,在value1 =“abc”的结果组中,有2个不同的value2值(“abc1”,“abc2”)。