2011-07-06 8 views
0

は、私は次のクエリを持っている:MySQLと各列の複数列の平均+ indivudual条件

SELECT `station_id`, AVG(`jan`) AS avg_jan, AVG(`feb`) AS avg_feb, ... , 
AVG(`dec`) AS avg_dec 
FROM `climate_data` 

WHERE `element_name` = "Temp_mean_mly" 
AND `jan` <> -999999 
AND `feb` <> -999999 
AND ... 
AND `dec` <> -999999 
GROUP BY station_id 

は、私はそれが個別の列ごとに-999999とは異なる値の平均値を返す必要があります!現行の照会は、値が-999999の列が正しくないすべての行を除去します。

おかげ

答えて

2

あなたはそうのようなNULLIFを使用することができます。

SELECT 
    station_id, 
    AVG(NULLIF(jan, -99999)) AS avg_jan, 
    AVG(NULLIF(feb, -99999)) AS avg_feb, 
    ... 
FROM climate_data 
WHERE element_name = 'Temp_mean_mly' 
GROUP BY station_id 

集約関数はNULL値をスキップするので、これは動作します。

+0

偉大な仕事!どうもありがとう! –

関連する問題