MySQL и среднее из нескольких столбцов + индивидуальное условие для каждого из столбцов - PullRequest
0 голосов
/ 06 июля 2011

У меня следующий запрос:

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, что является неправильным.

Спасибо

1 Ответ

2 голосов
/ 06 июля 2011

Вы можете использовать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...