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

如何获取数据表多列数据的非零最小值 附示例与预期输出

两列非零最小值计算实现方案

核心逻辑为逐行判断两列的0值情况,排除0值后取剩余数值的最小值,以下是不同场景下的实现方式:

通用SQL实现(兼容大多数关系型数据库)

通过CASE WHEN分支判断实现,逻辑清晰易兼容:

SELECT 
    ID,
    Parm1,
    Parm2,
    CASE 
        WHEN Parm1 = 0 THEN Parm2
        WHEN Parm2 = 0 THEN Parm1
        ELSE LEAST(Parm1, Parm2)
    END AS Min
FROM 你的表名;

MySQL场景简化写法

可以结合NULLIF和IFNULL函数简化代码:

SELECT 
    ID,
    Parm1,
    Parm2,
    -- 先将0转为NULL,取最小值后如果全为NULL则返回0(适配两列都为0的极端场景)
    IFNULL(LEAST(NULLIF(Parm1,0), NULLIF(Parm2,0)), 0) AS Min
FROM 你的表名;

Python Pandas实现

如果是用DataFrame处理数据,可以用逐行apply实现:

import pandas as pd

# 构造示例数据表
df = pd.DataFrame({
    'ID': [1,2,3,4,5],
    'Parm1': [1,0,2,1,2],
    'Parm2': [2,1,1,0,0]
})

# 计算非零最小值
df['Min'] = df.apply(
    lambda row: row['Parm1'] if row['Parm2'] == 0 
    else row['Parm2'] if row['Parm1'] == 0 
    else min(row['Parm1'], row['Parm2']),
    axis=1
)
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:06:02