MySQL проблема со значениями NULL

У меня есть таблица с полями: country_code, short_name, currency_unit, a2010, a2011, a2012, a2013, a2014, a2015. Поля a2010-a2015 имеют тип double.

Как сделать запрос, который упорядочивает результаты по средним значениям полей a2010-a2015, учитывая, что эти поля могут иметь значение NULL?

Я попробовал этот код, и он не сработал (возвращает ошибку, которая говорит о том, что в части ORDER BY неправильно что-то не так. Логика: ORDER BY ((A)/(B)) где A - сумма ненулевых полей и B - количество ненулевых полей.

Есть идеи?

(если важно, код будет использоваться в среде BigInsights)

SELECT country_code, short_name, currency_unit, a2010, a2011, a2012, 
a2013, a2014, a2015
FROM my_schema.my_table
WHERE Indicator_Code = 'SE.PRM.TENR'
ORDER BY 
(
(
Coalesce(a2010,0) + Coalesce(a2011,0) + Coalesce(a2012,0)  
+Coalesce(a2013,0) + Coalesce(a2014,0) + Coalesce(a2015,0)
)
/
(
COUNT(Coalesce(a2010)) + COUNT(Coalesce(a2011)) + COUNT(Coalesce(a2012)) 
+ COUNT(Coalesce(a2013)) + COUNT(Coalesce(a2014)) + 
COUNT(Coalesce(a2015))
)
) DESC;

1 ответ

Использовать MySQL ifnull

IFNULL(expression_1,expression_2)

в вашем запросе:-

IFNULL(
(
COUNT(Coalesce(a2010)) + COUNT(Coalesce(a2011)) + COUNT(Coalesce(a2012)) 
+ COUNT(Coalesce(a2013)) + COUNT(Coalesce(a2014)) + 
COUNT(Coalesce(a2015))
),
1
)
Другие вопросы по тегам