Menu
Coddy logo textTech

PARTITION BY criterion

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

OVER () 句のもう一つのオプションは 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

これは、各タイプ内で連番を振る列を生成します:

idtyperow_num
132t11
52t21
92t11
154t31
198t13

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

チャレンジ

簡単

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

  • <strong>doors</strong>: <strong>id</strong>, <strong>publication_year</strong>
  • <strong>doors_specs</strong>: <strong>id</strong>, <strong>country</strong>, <strong>color</strong>

ある工場でドアを製造しています。publication_year2000より小さいドアについて、countrycolorの組み合わせごとに番号を振る必要があります。このカラムにrow_numという名前を付けてください。

各グループ内では、idの昇順でドアに番号を振ってください。仕様(specs)のないドアは無視してください。最終的な結果をidの昇順で並べ替えてください。 

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン