sql查询得到的平均值如下面的情况或如何使用hibernate条件

7nbnzgx9  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(241)
Column Mode:   0 1 0 1
Column Value1: 5 6 4 8
Column Value2: 10 7 5 20

如何根据模式获取平均值,例如,对于模式0,它将从value1列获取值,而对于1,它将从value2列获取值
平均值=(5+7+4+20)/4=9

cczfrluj

cczfrluj1#

你可以使用mysql CASE 语句根据模式的值选择value1或value2。下面的查询应该适合您。

SELECT 
    AVG(CASE
        WHEN mode = 0 THEN value1
        WHEN mode = 1 THEN value2
    END)
FROM test
iyzzxitl

iyzzxitl2#

下面可能有用

select (val1+val2)/2 from 
    (select sum(case when mode =0 then value1 end) as val1 ,
     sum(case when mode=1 then value2 end) as val2
    ) t

select avg(case mode when 0 then Value1
                 when 1 then Value2
                   else 0 end) from t

相关问题