在MySQL查询中获得水平平均值的最有效方法是什么?

Eik*_*ern 3 mysql sql average

我有以下MySQL表

Id  |  One  |  Two  |  Three
----------------------------
1   |  10   |  30   |  20
2   |  50   |  60   |  20
3   |  60   |  NULL |  40
Run Code Online (Sandbox Code Playgroud)

编辑:当然,默认情况下表不需要为NULL,但我不希望它影响平均值(因此平均值计算为50而不是33,33).

我希望看起来像这样,使用MySQL查询:

Id | Average
------------
1  | 20
2  | 43,33
3  | 50
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最有效方法是什么?

use*_*976 9

select id, (ifnull(one,0) + ifnull(two,0) + ifnull(three,0))/
  ((one is not null) + (two is not null) + (three is not null)) as average from table
Run Code Online (Sandbox Code Playgroud)