Menu
Coddy logo textTech

集約関数

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

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

monthrevenueregion
440East
520East
660West
755West
861East
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

これは次を返します:

monthrevenuemax_revenue
44040
52040
66060
75560
86161

月 4 と月 5 の最大 revenue は 40、月 6 と月 7 では 60、月 8 では 61 です。これは、新しい、より大きな revenue を見つけると、古いものを破棄し、それまでで最大のものを使用するためです。

AVG()関数の場合は、次のようになります。

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
monthrevenueavg_revenue
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

次のようになります:

monthrevenueregionmax_revenue
440East40
520East40
660West60
755West60
861East61

これで、各 region ごとに最大値が個別に計算されます。East region と West region は、それぞれ独立して自身の累積最大値を維持します。

challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • booksbookpagewords

各 book について、book 名、総ページ数、各ページの words 数を表示し、次を計算してください:

  1. その book のいずれかのページに含まれる words 数の最大値
  2. book 全体におけるページあたりの words 数の平均値
  3. 現在のページの words 数と、その book のページあたりの平均 words 数との差

結果は book と page number の順に並べて表示してください。

次の列を返してください:

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

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン

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