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

如何按A、B列分组,使用组内C列最大值填充C列空值?

分组填充空值:用同组最大值替换null

没问题,我来帮你搞定这个需求——按A、B列分组,把C列的null值替换成对应分组里C的最大值,同时如果分组里C全是null就保留原样。下面分几种常用的SQL方言给出具体实现:

MySQL 写法

SELECT 
    A,
    B,
    COALESCE(C, MAX(C) OVER (PARTITION BY A, B)) AS C
FROM your_table;
  • 核心逻辑:MAX(C) OVER (PARTITION BY A, B) 会计算每个(A,B)组合分组里C的最大值,COALESCE函数则负责把C的null值替换成这个最大值,非null值保持不变。

PostgreSQL 写法

PostgreSQL支持相同的窗口函数语法,直接用下面的代码就行:

SELECT 
    A,
    B,
    COALESCE(C, MAX(C) OVER (PARTITION BY A, B)) AS C
FROM your_table;

SQL Server 写法

SQL Server里可以用ISNULL替代COALESCE,效果一样:

SELECT 
    A,
    B,
    ISNULL(C, MAX(C) OVER (PARTITION BY A, B)) AS C
FROM your_table;

最终效果验证

运行上述代码后,你的数据表会变成你想要的结果:

ABC
120
120
23null

这里特意处理了分组(2,3)的情况:因为这个分组里C只有null,MAX(C)的结果也是null,所以COALESCE/ISNULL会保留原null值,完全符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:28:10