0
sqliteでクロスタブ/ピボットを行うには、hereのようにcase
ステートメントを使用できます。しかし、そのような「生成された」列、すなわち「Puma」列の内容を「Fiesta」列で割り算することはできません。sqliteのcaseを介してクロス集計/ピボットを使用した計算を行う方法は?
私の問題を回避するには、メイン「クロス集計」出力に「ピューマ」と「フィエスタ」列とjoin
このview
を含む補助view
を作成し、参加補助テーブルからの列を分割することでした。
CREATE VIEW aux_table AS SELECT
shop_id,
sum(CASE WHEN product = 'Fiesta' THEN units END) as Fiesta,
sum(CASE WHEN product = 'Focus' THEN units END) as Focus`
FROM sales
GROUP BY shop_id;
SELECT
shop_id,
sum(CASE WHEN product = 'Fiesta' THEN units END) as Fiesta,
sum(CASE WHEN product = 'Focus' THEN units END) as Focus,
sum(CASE WHEN product = 'Puma' THEN units END) as Puma,
at.Fiesta/at.Focus 'ratio between Fiesta and Focus'
FROM sales
JOIN aux_table at ON
sales.shop_id = at.shop_id
GROUP BY shop_id;
しかし、私はこれを行う簡単な方法があるのだろうかと思います。
私は推測するおかげで、私の場合と同じように 'avg((CASE WHEN ...)/ AVG(CASE WHEN ...)')ではなく '(CASE WHEN ...)/ 'avg'、' sum'などは必要ありません。 – sseelenluft