DB2におけるROW_NUMBER() OVER()関数の使用法
2022-03-02 16:17:04
1、row_number()over()ソート関数。
(1) row_number() over() グループソート機能。
row_number() over() 関数を使用した場合、over() におけるグループ化およびソートは、 where group by order by の実行より後に行われます。
partition byは結果集合のグループ化に使用され、指定しない場合は結果集合全体をグループとして扱います。集約関数との違いは、集約関数が一般的に統計情報を反映した1行のみを返すのに対し、グループ内で複数行を返すことができる点である。
例:従業員、部門別グループ分けでソート。
- セレクト <スパン empno,WORKDEPT,SALARY, Row_Number() OVER (partition) <スパン で <スパン ワークデプト オーダー バイ 給与 降下 ) ランク フロム 従業員
- -------------------------------------- <スパン
- 000010 a00 152750 1
- 000110 a00 66500 2
- 000120 a00 49250 3
- 200010 a00 46500 4
- 200120 a00 39250 5
- 000020 b01 94250 1
- 000030 c01 98250 1
- 000130 c01 73800 2
(2) クエリ結果をソートする。(グループ化なし)
- セレクト <スパン empno,WORKDEPT,SALARY, Row_Number() OVER ( <スパン ORDER バイ 給与 降下 ) ランク フロム 従業員
- -------------------------------------- <スパン
- 000010 a00 152750 1
- 000030 c01 98250 2
- 000070 d21 96170 3
- 000020 b01 94250 4
- 000090 e11 89750 5
- 000100 e21 86150 6
- 000050 e01 80175 7
- 000130 c01 73800 8
- 000060 d11 72250 9
row_number() over() は rownum に似ていますが、もう少し強力です (各グループ内で 1 からソートできます)。
2. rank() over() はジャンプソートで、2位が2つあるとき、次は4位(これも各グループ内)です。
- セレクト <スパン 勤務先,給与,ランク() over(partition) <スパン で <スパン ワークデプト 注文 によって <スパン 給与) として 密なランク順 から エンプ 注文 によって ワークデプト
- ------------------
- <スパン A00 39250 1
- <スパン A00 46500 2
- <スパン A00 49250 3
- <スパン A00 66500 4
- <スパン A00 152750 5
- b01 94250 1
- c01 68420 1
- <スパン C01 68420 1
- C01 73800 3
3. dense_rank() over() は連続ソートで、2位がまだ2つ続いています。これに対してrow_numberは重複する値がない ? .
- セレクト <スパン 勤務先,給与,dense_rank() over(partition) <スパン で <スパン ワークデプト 注文 によって <スパン 給与) として 密なランク順 から エンプ 注文 によって ワークデプト
- ------------------
- <スパン A00 39250 1
- <スパン A00 46500 2
- <スパン A00 49250 3
- <スパン A00 66500 4
- <スパン A00 152750 5
- b01 94250 1
- c01 68420 1
- <スパン C01 68420 1
- C01 73800 2
- C01 98250 3
---ROW_NUMBERを使用して重複データを削除します。
---テーブルTABにa,b,cの3つの列があるとします。次のステートメントを使用して、a,b,c がすべて同じである重複行を削除することができます。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例