MySQLのビューは:どのように私は0に計算フィールドのデフォルト値を設定するのですか?
-
19-09-2019 - |
質問
私は、ビューのパーセンテージ計算を作成するには、次のステートメントを使用します:
ラウンド(((Surveys
.RejectedAsAdvertising
/ Surveys
.Responses
)* 100)、0)PercentageAdvertising
AS
基本的に、私は応答の合計数で(この場合には、広告と見なさものです)特定の質問に対する回答の数を割ります。
最後に、私は、5件の可能なアンケートの回答のそれぞれの割合を示して列を持っている(「それは宣伝ですか?」「それは退屈ですか?」など。)。
これは完璧に動作しますが、私は微調整したい一つのことがあります。応答タイプ(例えば、広告)が任意の票を持っていない場合は、私の計算フィールドはNULL値を受け取ります。
私のビューを定義するとき、私はデフォルト値の0を指定することができますか?
感謝します。
解決
あなたはそこでcoalesce
を必要としています。これは、最初の非NULLの引数を選択ので、あなたのようなものを必要とします:
coalesce(
round(
((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
,0)
,0)
AS PercentageAdvertising
ラウンドの結果がNULLの場合、すると、それはあなたが代わりにゼロになります。
他のヒント
COALESCE には好ましいアプローチであります、そのため、パラメーターがnullの場合の評価を扱うANSI標準的な方法です。ビーイングANSI、同じ構文が必要な場合は、データベース間のポートに簡単にクエリを行う、などのOracle、SQL Serverの、Postgresの、でサポートされています。
COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
IFNULL のですMySQLの特定の構文ます:
IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
所属していません StackOverflow