Menu
CoddyTech

PARTITION BY基準

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

OVER ()句には、もう1つの選択肢としてPARTITION BYがあります。

これにより、各グループの行を個別に番号付けできます 

例:

idtype
132t1
52t2
92t1
154t3
198t1
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1

これにより、各タイプの行をそれぞれ id の順序で番号付けした列が生成されます(以下の結果はタイプ別にグループ化して表示されています)。

idtyperow_num
92t11
132t12
198t13
52t21
154t31

id 92 は、type t1 における最小の id であるため、row_num 1 です。

注: ROW_NUMBER() では、各パーティション内で行に番号を付ける方法を決定するために、OVER() 内に ORDER BY 句が必要です。

PARTITION BYの中に複数の列を指定することもできます。

ROW_NUMBER() OVER (PARTITION BY type, hue ORDER BY id)
challenge icon

チャレンジ

簡単

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

  • doors: id、 publication_year
  • doors_specs: id、 country、 color

工場でドアを製造しています。publication_yearが2000より小さい、各countryとcolorの組み合わせごとにドアに番号を付ける必要があります。この列をrow_numと名付けてください。

各グループ内では、idの昇順でドアに番号を付けます。仕様のないドアは無視してください。最終結果はidの昇順で並べ替えてください。 

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン

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