统计每个 ID 列对应的键值的唯一出现次数

Count number of unique occurrences of a key value corresponding to each ID column

我在 DB2 中有一个 table,如下所示:

Key     ID  SubID
Abc123  576  10
Abc123  576  12
Abc124  576  13
Abc125  577  14
Abc126  578  15
Abc127  578  16
Abc128  578  17

想要创建一个额外的计数列,用于计算每个 ID 键值的唯一出现次数,输出应如下所示

Key     ID  SubID Count
Abc123  576  10    2
Abc123  576  12    2
Abc124  576  13    2
Abc125  577  14    1
Abc126  578  15    3
Abc127  578  16    3
Abc128  578  17    3

下面我试过了

select Key, ID, SubId ,
count(Key) over (partition by Key) as count
from table

感谢任何帮助!

您不能将 window 函数与 DISTINCT 限定符一起使用。您可以使用标量子查询来计算所需的行数。

例如:

select *,
  (select count(distinct key) from t x where x.id = t.id) as cnt
from t

结果:

 KEY     ID   SUBID  CNT 
 ------- ---- ------ --- 
 Abc123  576  10     2   
 Abc123  576  12     2   
 Abc124  576  13     2   
 Abc125  577  14     1   
 Abc126  578  15     3   
 Abc127  578  16     3   
 Abc128  578  17     3   

请参阅 db<>fiddle 中的 运行 示例。