如何获取数据表多列数据的非零最小值 附示例与预期输出
两列非零最小值计算实现方案
核心逻辑为逐行判断两列的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
相关产品推荐
相关产品推荐

