2012-06-13 3 views
2

J'essaie quelques exemples avec des fonctions analytiques et j'ai créé un violon sql pour comprendre un compte distinct sur la partition par clause.Ceci est mon sqlfiddle.Compte SQL et distinct et partition

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 

Si vous regardez l'ensemble des résultats, je pense que valcount 1 pour la troisième ligne mais son 2 et ne sais pas pourquoi c'est le cas.

+0

est-ce que la valeur ne doit pas être 1? car pour value1 abc, il n'y a qu'un abc2? – cableload

+0

oui .. vous avez raison .. je pense que je pensais trop .. merci – cableload

Répondre

2

abc (valeur 1) a seulement deux valeurs distinctes sur la deuxième colonne (de ABC1 et abc2), et puisque vous comptez les valeurs distinctes sur colonne2 partitionnés sur la colonne 1, vous devriez en effet obtenir 2

1

Le valcount devrait être 2.

Vous avez partitionné par valeur1, de sorte que le nombre s'exécute dans ce contexte. C'est-à-dire, dans le groupe de résultats où value1 = "abc", il y a 2 valeurs distinctes de value2 ("abc1", "abc2").