2012-06-13 3 views
2

나는 분석 함수를 사용하여 몇 가지 예제를 시험해보고 있는데, 저는 partition by clause와는 다른 개수를 이해하기 위해 SQL 피들을 만들었습니다. 이것은 내 sqlfiddle입니다. 당신이 결과 집합을 보면SQL 개수 및 구별 및 파티션

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 

, 나는 세 번째 행에 대해 1과 VALCOUNT을 기대하지만, 대신 2를하고 그런 경우 이유를 잘 모르겠습니다 것이다.

+0

값이 1이 아니어야합니까? 왜냐하면 value1 abc에는 abc2가 하나 뿐이므로? – cableload

+0

예 .. 당신 말이 맞아요. 나는 너무 많이 생각하고 있다고 생각해. 감사합니다. – cableload

답변

2

ABC (값 1) 번째 열에서 단지 2 고유 값 (ABC1 및 abc2)를 가지며, 사용자가 칼럼 (1) 위에 구획 2 열에서 고유 한 값을 계산 한 이후 실제로 가야 2

1

VALCOUNT 같아야 2.

값 1로 파티셔닝 했으므로 카운트는 해당 컨텍스트 내에서 실행됩니다. 즉, value1 = "abc"인 결과 그룹에서 value2의 두 개의 고유 값 ("abc1", "abc2")이 있습니다.