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

Postgres中如何跨列计算均值与极差?

Postgres宽表行级跨列计算(类似Pandas axis=1)

简便实现方案

直接将需要计算的列转为数组,利用Postgres内置的数组函数完成行级均值和极差计算,写法和Pandas指定axis=1处理每行的逻辑一致:

假设你的表为obs_data,执行以下SQL:

SELECT
  "group",
  obs1, obs2, obs3, obs4, obs5, -- 可选:保留原始观测列
  -- 计算行均值
  array_avg(ARRAY[obs1, obs2, obs3, obs4, obs5]) AS grp_avg,
  -- 计算行极差(最大值-最小值)
  array_max(ARRAY[obs1, obs2, obs3, obs4, obs5]) - array_min(ARRAY[obs1, obs2, obs3, obs4, obs5]) AS grp_range
FROM obs_data;

兼容低版本Postgres(<10)

如果你的Postgres版本不支持array_avg/array_max/array_min,可以用子查询+unnest实现:

SELECT
  "group",
  obs1, obs2, obs3, obs4, obs5,
  (SELECT avg(val) FROM unnest(ARRAY[obs1, obs2, obs3, obs4, obs5]) AS val) AS grp_avg,
  (SELECT max(val) - min(val) FROM unnest(ARRAY[obs1, obs2, obs3, obs4, obs5]) AS val) AS grp_range
FROM obs_data;

关键说明

  • ARRAY[obs1, obs2,...]将每行的目标列打包成数组,对应Pandas中选取每行指定列的操作
  • 函数会自动忽略NULL值,和Pandas默认行为一致
  • 写法简洁,无需复杂的窗口函数或行转列操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:47:10