全体に占める割合
CoddyのSQLジャーニー「応用」セクションの一部。レッスン 24/27。
全体に対する各行の割合の算出は、ウィンドウ関数の典型的な例です。各行の値を、ウィンドウ全体にわたる同じ列の SUM で除算します。
SELECT product, revenue,
revenue * 100.0 / SUM(revenue) OVER () AS pct
FROM sales空の OVER () は「結果セット全体」を意味します。代わりに、グループ内のシェアを計算するには PARTITION BY を追加します(例:各カテゴリ内のシェアを計算する場合は OVER (PARTITION BY category))。
除算が浮動小数点数(float)として行われるように、100ではなく100.0を掛けます。そうしないと、SQLiteの整数除算によって小さなシェアがゼロに丸められてしまいます。
チャレンジ
簡単利用可能なテーブルとカラム:
<strong>sales</strong>:<strong>category</strong>,<strong>product</strong>,<strong>revenue</strong>
各行について以下を返してください:
categoryproductrevenuepct_of_category: そのカテゴリ内での製品の収益シェア(小数点第1位で四捨五入)
ウィンドウで PARTITION BY を使用してください。category で並べ替え、次に pct_of_category の降順で並べ替えてください。
自分で試してみよう
SELECT category, product, revenue,
-- カテゴリー内でのシェアとしての pct、PARTITION BY を使用
FROM sales
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
応用のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド