累計
CoddyのSQLジャーニー「応用」セクションの一部 — レッスン 25/27。
累計(累積)合計は、ORDER BY を指定したウィンドウ上での SUM です。これにより、集計が1行ごとに増加するものに変わります。
SELECT day, amount,
SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenueORDER BY がないと、ウィンドウはすべての行を対象とし、すべての行に総計が表示されます。これがある場合、ウィンドウはその順序で一度に1行ずつ拡張されるため、各行には自分自身とその前のすべての行だけが表示されます。
PARTITION BY を追加して、グループごとに累計をリセットします(例:地域ごとの日次収益の累計など)。
チャレンジ
簡単利用可能なテーブルとカラム:
<strong>revenue</strong>:<strong>region</strong>,<strong>day</strong>,<strong>amount</strong>
region、day、amount、および region_running_total を取得してください。region_running_total は、その日までの**そのリージョン**の累積 amount です。累計はリージョンごとにリセットされる必要があります。
ウィンドウで PARTITION BY を使用してください。region、次に day の順で並べ替えてください。
チートシート
累計(累積合計)は、ウィンドウ内で SUM と ORDER BY を使用します。ウィンドウはその順序で1行ずつ拡張されます:
SELECT day, amount,
SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenueグループごとに累計をリセットするには、PARTITION BY を追加します:
SELECT region, day, amount,
SUM(amount) OVER (PARTITION BY region ORDER BY day) AS region_running_total
FROM revenue
ORDER BY region, day自分で試してみよう
SELECT region, day, amount,
-- SUM(amount) OVER (PARTITION BY region ORDER BY day)
FROM revenue
ORDER BY region, day
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。