【问题标题】:SQL count and distinct and partitionSQL 计数和区分和分区
【发布时间】:2012-06-16 18:41:04
【问题描述】:

我正在尝试一些具有分析功能的示例,并且我创建了一个 sql fiddle 来理解按子句划分的不同计数。这是我的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,我不确定为什么会这样。

【问题讨论】:

  • valcount不应该是1吗?因为对于 value1 abc,只有一个 abc2 ?
  • 是的..你是对的..我想我想太多了..谢谢

标签: sql oracle oracle11g


【解决方案1】:

abc(值 1)在第二列(abc1 和 abc2)上只有 2 个不同的值,并且由于您计算在第 1 列上分区的 column2 上的不同值,您确实应该得到 2

【讨论】:

    【解决方案2】:

    valcount 应该是 2。

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

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多