如果column是default,则在mySQL中计算值

时间:2009-11-11 13:39:35

标签: mysql

我有下表:

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 个答案:

答案 0 :(得分:2)

您可以使用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

答案 1 :(得分:1)

试试这个:

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