我有下表:
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查询计算成本?
答案 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