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

如何同时按两列分组并计算对应值的平均值?

按两列合并分组求平均值的解法

原始数据表格

Col ACol BCol C
P1P210
P1P315
P2P120
P3P230

期望结果

  • P1: 15((10 + 15 + 20) / 3)
  • P2: 20((10 + 20 + 30) / 3)
  • P3: 22.5((15 + 30) / 2)

正确解法

你之前用UNION单独分组的问题在于,仅分别统计了ColA和ColB各自的平均值再合并,没有把同一个P在两列中对应的所有ColC值汇总到一起。正确的做法是先通过UNION ALL将两列的P值统一合并为单列,同时保留对应的ColC值,再按这个新列分组计算平均值:

SELECT 
    p_value,
    AVG(col_c) AS avg_value
FROM (
    -- 提取ColA中的P值及对应ColC
    SELECT col_a AS p_value, col_c FROM your_table
    UNION ALL
    -- 提取ColB中的P值及对应ColC
    SELECT col_b AS p_value, col_c FROM your_table
) AS combined_data
GROUP BY p_value;

代码说明

  1. 子查询combined_data通过UNION ALL把两列的P值合并成单列p_value,同时关联对应的ColC值,确保每个P在两列中出现的所有记录都被保留。
  2. 外层查询按p_value分组,用AVG()函数计算该P对应所有ColC值的平均值,最终得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:55:16