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

如何为数据集添加列统计Block下SubBlock的数量?已尝试ROW_NUMBER()函数未成功

解决方法:统计每个Block下的SubBlock数量

我明白你想要的是给每行新增一列,展示当前BlockRef分组下不同SubBlockRef的总数。你之前尝试的ROW_NUMBER()函数并不适用于这个场景——它的作用是在指定分区内给每行分配一个递增的序号,而不是统计分组内的唯一值数量。

正确的实现方式

你可以使用窗口函数COUNT(DISTINCT ...) OVER (...)来实现需求,具体SQL语句如下:

SELECT 
    BlockRef,
    Blocks,
    SubBlockRef,
    SubBlocks,
    -- 统计当前BlockRef下的唯一SubBlockRef数量
    COUNT(DISTINCT SubBlockRef) OVER (PARTITION BY BlockRef) AS SubBlockCount
FROM YourTable;

示例结果

针对你提供的数据集,执行上述语句后会得到如下结果:

BlockRefBlocksSubBlockRefSubBlocksSubBlockCount
37391BLOCK49391SUBB2
37391BLOCK49391SUBB2
37391BLOCK49391SUBB2
37391BLOCK49391SUBB2
37391BLOCK49391SUBB2
37391BLOCK49391SUBB2
37391BLOCK49392SUBB2
37391BLOCK49392SUBB2
37391BLOCK49392SUBB2
37391BLOCK49392SUBB2
37391BLOCK49392SUBB2
37391BLOCK49392SUBB2

为什么之前的方法不对?

你之前的语句ROW_NUMBER() over (PARTITION BY BlockRef,SubBlockRef ORDER BY BlockRef, SubBlockRef DESC)是按BlockRef+SubBlockRef的组合分区,然后给每个组合内的行排序编号。所以对于49391这个SubBlock,每行的编号会是1到6,49392也是1到6——这显然不是你需要的“每个Block下的SubBlock总数”。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:03:13