Menu
Coddy logo textTech

Aggregation Functions

CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 68/72。

集計関数は、AVG()MAX()、またはその他の集計関数を現在の行まで計算するために使用されます。
例えば、各終了期間までの最大収益を計算することができます:

収益地域
440
520
660西
755西
861
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

これは次を返します:

収益最大収益
44040
52040
66060
75560
86161

4ヶ月目と5ヶ月目の最大収益は40、6ヶ月目と7ヶ月目は60、そして8ヶ月目は61です。これは、より大きな新しい収益が見つかると、古い値を破棄して、それまでの最大値を使用するためです。

AVG() 関数については、以下のようになります:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
収益平均収益
44040
52030
66040
75543.75
86147.2

PARTITION BYを使用して、特定のカテゴリごとに計算をグループ化することもできます。例えば:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

次のような結果になります:

収益地域max_revenue
44040
52040
660西60
755西60
86161

これで、最大値は各リージョンごとに個別に計算されます。EastリージョンとWestリージョンは、それぞれの累積最大値を独立して維持します。

challenge icon

チャレンジ

簡単

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

  • <strong>books</strong>: <strong>book</strong>, <strong>page</strong>, <strong>words</strong>

各書籍について、書籍名、ページ番号、各ページの単語数を表示し、以下を計算してください:

  1. その書籍のいずれかのページで見つかった最大単語数
  2. 書籍全体の1ページあたりの平均単語数
  3. 現在のページの単語数と、その書籍の1ページあたりの平均単語数との差

結果を bookpage 番号の順に並べて表示してください。

以下のカラムを返してください:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

チートシート

集計を伴うウィンドウ関数は、現在の行に関連する一連の行にわたって値を計算します。累積計算を行うには、OVER句とORDER BYを組み合わせて使用します。

SELECT column, 
       MAX(column) OVER (ORDER BY column ASC) as running_max,
       AVG(column) OVER (ORDER BY column ASC) as running_avg
FROM table

カテゴリごとに計算をグループ化するには、PARTITION BYを使用します。

SELECT column, category,
       MAX(column) OVER (PARTITION BY category ORDER BY column ASC) as max_per_category
FROM table

これにより、カテゴリごとに個別に最大値が計算され、独立した累積計算が維持されます。

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン