代码之家  ›  专栏  ›  技术社区  ›  Emily

如果列为默认值,则在mysql中计算值

  •  0
  • Emily  · 技术社区  · 15 年前

    我有下表:

    id  |  kwh  |   cost
    ---------------------
     1  |  10   |   8.95
     2  |  20   |    0
     3  |  100  |  16.54   
    

    我需要得到平均成本。

    如果成本仍然是默认值(0),则成本值按以下公式计算:(7.87+(kWh*8.19)/100)*1.03

    因此,ID 2的成本估计为9.79,平均成本为35.28/3=11.76。

    如果列具有默认值,那么是否有一个mysql查询来计算成本,否则使用输入值?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Phil Ross Matt Johnson-Pint    15 年前

    您可以使用 CASE 用于测试成本是否为0的表达式:

    SELECT
      *,
      CASE cost WHEN 0 THEN (7.87 + (kwh * 8.19) / 100) * 1.03 ELSE cost END calc_cost
    FROM
      tablename
    

    然后可以将此表达式用于 AVG 要获得平均值:

    SELECT
      AVG(CASE cost WHEN 0 THEN (7.87 + (kwh * 8.19) / 100) * 1.03 ELSE cost END)
    FROM
      tablename
    
        2
  •  1
  •   Tamas Mezei    15 年前

    试试这个:

    select 
        case
            when cost = 0 then (7.87 + (kwh * 8.19) / 100) * 1.03
            else cost
        end as calculated_cost
    from table
    where id = 2
    

    [编辑]啊,你需要平均分!

    select 
        avg(case
            when cost = 0 then (7.87 + (kwh * 8.19) / 100) * 1.03
            else cost
        end as calculated_cost)
    from table