统计每个 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 中的 运行 示例。
我在 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 中的 运行 示例。