AVG()
複数の行から値を取得し、それらの平均を求める集計関数です。
3 つの列を平均しようとしています。
あなたの特定のケースでは、代数を使用して実行できます。
SELECT
(SUM(score) * .3) As score_a,
(SUM(score) * .6) As score_b,
(SUM(score) * .8) As score_c,
(SUM(score) * ((0.3 + 0.6 + .8) / 3.0)) As score_avg
FROM
score_table
より一般的なケースでは、別の列で定義したばかりの列を参照できないという事実によって制限されます...
SELECT
a + 1 AS inc_a,
inc_a * 2 AS this_is_invalid
FROM
your_table
自分自身を繰り返すか、サブクエリを使用する必要があります...
繰り返し
SELECT
(SUM(score) * .3) As score_a,
(SUM(score) * .6) As score_b,
(SUM(score) * .8) As score_c,
((SUM(score) * .3) + (SUM(score) * .3) + (SUM(score) * .3)) / 3.0 As score_avg
FROM
score_table
サブクエリ
SELECT
score_a,
score_b,
score_c,
(score_a + score_b + score_c) / 3.0 AS score_avg
FROM
(
SELECT
(SUM(score) * .3) As score_a,
(SUM(score) * .6) As score_b,
(SUM(score) * .8) As score_c
FROM
score_table
)
AS data