2016-09-06 16 views
0

行の代わりに複数の列の平均値を求めたいと思います。 現在、テーブルを転置しましたが、テーブルが非常に大きく、30列を転置すると行数が29倍に増えてパフォーマンスに影響します。複数の列の平均値

colum1 measure1測定2 measure3平均 ABC 100 200 300 200 デフ50 60 70 60

私は平均的な時間ですべての30個の列を使用するつもりはないし、それがフロントエンドで私のパラメータに依存します。

転置以外の目的の結果を得るための他の解決方法があるかどうかを知りたいと思います。 Redshiftでは、テーブルを29回結合して列を行に転置しています。

あなたのアドバイスは高く評価されます。

おかげで、 MC

答えて

2

はこのような何か(Oracleのクエリを)試してみてください。

WITH input_data AS (
    SELECT 100 AS measure1, 200 AS measure2 FROM DUAL 
    UNION ALL 
    SELECT 1000 AS measure1, 2000 AS measure2 FROM DUAL 
) 
SELECT (a.measure1 + a.measure2)/2 AS measure_avg FROM input_data a 

出力:

MEASURE_AVG 
150 
1500 
+0

PostgresはSELECT文が一部であるAbihabi87 @システム表DUAL –

+0

をhaventはそれは重要です。 – dood

+0

ですが、ポストグルでは 'SELECT 100 AS measure1、200 AS measure2'のみ 'FROM DUAL'なしで使用できます。デフォルトテーブルDUALはpostgresに存在しません。 –