バックエンドでは、RSForm Proから生成されたいくつかの調査結果をコンパイルしており、PlotALot円グラフを使用して統計をグラフィカルに表示したいと考えています。
私のフォームには、この特定の質問に対して4つの可能な値があります:Australia
、NewZealand
、Oceania
、およびOther
。
Plot1タブのsql textareaで次のクエリを開始しました。
SELECT FieldValue, COUNT(1)
FROM jprefix_rsform_submission_values
WHERE FormId = 8
AND FieldName = 'Location'
GROUP BY 1
ORDER BY 2 DESC
ただし、これはカウントがゼロの場所を省略します。すべての可能な場所が確実に含まれるようにするために、サブクエリを介してデフォルトの場所のテーブルを導出し、RSFormデータを派生テーブルに結合しました。
SELECT
Location,
COUNT(FieldValue)
FROM (
(SELECT 'Australia' AS Location)
UNION
(SELECT 'New Zealand')
UNION
(SELECT 'Oceania')
UNION
(SELECT 'Other')) AS defaults
LEFT JOIN jprefix_rsform_submission_values
ON FormId = 8
AND FieldName = 'Location'
AND FieldValue = REPLACE(Location, ' ', '')
GROUP BY 1
ORDER BY 2 DESC
これにより、正しい結果セットが提供されます。
Location | COUNT(FieldValue)
--------------------------------
Australia | 46
Other | 7
New Zealand | 0
Oceania | 0
問題は、このsqlをPlotAlotにフィードすると、次のように表示されるだけです。
PlotAlotが凡例のゼロ値を省略しないようにするにはどうすればよいですか?
SELECT句の2番目の列を修正して、非常に小さいゼロ以外の10進数値を生成することで、これをなんとか解決しました。
_IF(COUNT(FieldValue) > 0, COUNT(FieldValue), 0.1)
_
レコードの場合、GREATEST(COUNT(FieldValue), 0.1)
は実質的に同じ結果セットを持ち(技術的には、すべての結果が浮動小数点値になります)、グラフィック出力は同じです。
その結果、場所が凡例に表示され、_0.1
_の値は_0
_に丸められます。
小さな値が凡例の「その他」ラベルにまとめられることを処理する潜在的に関連する問題として、 sliceVisibilityThreshold 値を_0
_に設定することで解決できる場合があります。
これを実装するには、PlotALotのチャートエディターに移動し、[Extra]タブをクリックして、[Extra Options]フィールド内に_sliceVisibilityThreshold: 0
_と入力します。