【问题标题】:SQL query to get average as below case or how to use hibernate criteriaSQL查询以获取以下情况的平均值或如何使用休眠条件
【发布时间】:2018-09-07 09:24:07
【问题描述】:
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

【问题讨论】:

  • 使用case 表达式来选择val1 或val2。然后AVG().

标签: mysql sql hibernate


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    以下可能有效

     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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 2016-08-25
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多