Menu
Coddy logo textTech

全体に占める割合

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の整数除算によって小さなシェアがゼロに丸められてしまいます。

challenge icon

チャレンジ

簡単

利用可能なテーブルとカラム:

  • <strong>sales</strong>: <strong>category</strong>, <strong>product</strong>, <strong>revenue</strong>

各行について以下を返してください:

  • category
  • product
  • revenue
  • pct_of_category: そのカテゴリ内での製品の収益シェア(小数点第1位で四捨五入)

ウィンドウで PARTITION BY を使用してください。category で並べ替え、次に pct_of_category の降順で並べ替えてください。

自分で試してみよう

SELECT category, product, revenue,
       -- カテゴリー内でのシェアとしての pct、PARTITION BY を使用
FROM sales
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

応用のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド