1

フィールドを持つテーブルがあります: country_code、short_name、currency_unit、a2010、a2011、a2012、a2013、a2014、a2015。a2010-a2015 フィールドは double 型です。

これらのフィールドには NULL 値が含まれる可能性があることに注意して、フィールド a2010-a2015 の平均で結果を並べ替えるクエリを作成するにはどうすればよいですか?

私はこのコードを試しましたが、うまくいきませんでした (ORDER BY 部分に何か問題があることを示す間違いを返します。間違いは、カウント名と GROUP BY について何かを言っていました)。ロジックは次のとおりです。ORDER BY ((A)/(B)) ここで、A - 非 NULL フィールドの合計と B - 非 NULL フィールドの数。

何か案は?

(重要な場合、コードは 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;
4

1 に答える 1

0

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
)
于 2015-11-24T11:19:59.580 に答える