You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DB2中如何用ROW_NUMBER() OVER(PARTITION BY ... )统计Value=1的Distinct ID数量?

用ROW_NUMBER() OVER(PARTITION BY ...)统计DB2中Value=1的Distinct ID数量

可以用ROW_NUMBER() OVER(PARTITION BY ...)实现这个统计需求,但这属于间接实现方式——实际上有更简洁高效的写法,不过如果你必须用窗口函数的话,完全可行。

用ROW_NUMBER()的实现方式

思路是先给每个符合条件(Value=1)的ID标记唯一序号,只保留每个ID的第一条记录,最后统计这些记录的数量:

SELECT COUNT(*) AS distinct_id_count
FROM (
    SELECT ID,
           -- 按ID分区,给每个ID的记录分配从1开始的序号
           ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS rn
    FROM your_table
    WHERE Value = 1
) t
-- 只保留每个ID的第一条记录,即唯一标识该ID的行
WHERE rn = 1;

子查询中,每个ID对应的所有Value=1的记录会被分配连续的序号,外层筛选rn=1的行后,COUNT(*)得到的就是唯一ID的总数。

更简洁的替代写法

如果没有特殊场景必须用窗口函数,直接用COUNT(DISTINCT ...)是更高效、直观的选择:

SELECT COUNT(DISTINCT ID) AS distinct_id_count
FROM your_table
WHERE Value = 1;

这条语句直接统计Value=1时的唯一ID数量,性能通常优于窗口函数的写法,建议优先使用。

内容的提问来源于stack exchange,提问作者SamR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:38:12