構文フォーマット: row_number() over(partition by grouping column order by sorting column desc) row_number() over() グループ化ソート関数: row_number() over() 関数を使用する場合、over() でのグループ化と並べ替えは、where、group by、order by よりも後に実行されます。 例1: 表データ: テーブルTEST_ROW_NUMBER_OVER(を作成 id varchar(10) が null ではない、 名前 varchar(10) null, 年齢 varchar(10) null, 給与 int null ); TEST_ROW_NUMBER_OVER t から * を選択します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(1,'a',10,8000) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(1,'a2',11,6500) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(2,'b',12,13000) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(2,'b2',13,4500) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(3,'c',14,3000) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(3,'c2',15,20000) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(4,'d',16,30000) を挿入します。 TEST_ROW_NUMBER_OVER(id,name,age,salary) に値(5,'d2',17,1800) を挿入します。 一度だけ並べ替え: クエリ結果を並べ替えます (グループ化なし) id、名前、年齢、給与、行番号()を選択し、給与降順で並べ替えます。rn TEST_ROW_NUMBER_OVER から t 結果: さらに並べ替え: IDグループで並べ替え id、名前、年齢、給与、行番号()を選択し、(idでパーティション分割し、給与の降順で並べ替え)ランク付けします。 TEST_ROW_NUMBER_OVER から t 結果: 再度ソート: 各グループ内のシーケンス番号1のデータを検索します select * from(select id,name,age,salary,row_number()over(partition by id order by salary desc) rank TEST_ROW_NUMBER_OVER から t) ランク <2 結果: 13歳から16歳までのデータを検索するには、給与順に並べ替えます id、名前、年齢、給与、行番号()を選択し、給与降順で並べ替え、順位付けします。 TEST_ROW_NUMBER_OVER t から、年齢が '13' から '16' の間 結果: 結果のランク番号は、実際にはover(order by salary desc)がwhere age between andの後に実行されることを示しています。 例2: 1. row_number() 関数を使用して番号を付ける。 QT_Customer から email、customerID、ROW_NUMBER() を (order by psd) の行として選択します。 原則: まず psd で並べ替え、並べ替えた後に各データに番号を付けます。 2. 注文を価格の昇順に並べ替え、各レコードを並べ替えます。コードは次のとおりです。 OP_Order から行として DID、customerID、totalPrice、ROW_NUMBER() を (totalPrice で順序付け) 選択します。 3. 各世帯からの注文をすべて数え、各顧客の注文金額に応じて昇順で並べ替え、各顧客の注文に番号を付けます。この方法で、各顧客がいくつ注文したかを知ることができます。 ROW_NUMBER() を選択 (顧客ID でパーティション、合計価格で順序付け) OP_Order からの行、顧客 ID、合計価格、DID として 4. 各顧客が最近行った注文の数を数えます。 タブ付き ( ROW_NUMBER() を選択 (顧客ID でパーティション、合計価格で順序付け) OP_Order からの行、顧客 ID、合計価格、DID として ) タブから「注文数」と顧客IDとしてMAX(行)を選択します 顧客IDでグループ化 5. 各顧客のすべての注文の中で最も小さい購入金額を数え、また、この順序で顧客が行った購入回数も数えます。 アイデア: この操作を実行するには一時テーブルを使用します。 1. まず顧客ごとにグループ化し、次に顧客が注文した時間で並べ替えて番号を付けます。 2. 次に、サブクエリを使用して、各顧客の購入の最小価格を調べます。 3. 各顧客の最低価格に基づいて対応するレコードを検索します。 タブ付き ( ROW_NUMBER() を選択 (顧客 ID によるパーティション、insDT による順序) OP_Order からの行、顧客 ID、合計価格、DID として ) タブから*を選択 totalPriceが ( 顧客ID別にタブグループからMIN(totalPrice)を選択します。 ) 6. 顧客による最初の注文を除外します。 アイデア。顧客の最初の注文レコードを照会するには、rows=1 を使用します。 タブ付き ( ROW_NUMBER() を (partition by customerID order by insDT) として行として選択し、* OP_Order から ) 行数が 1 のタブから * を選択します OP_Orderから*を選択 7. 注意: over などのウィンドウ関数を使用する場合、over でのグループ化と並べ替えは、「where、group by、order by」の実行よりも後に実行されます。 選択 ROW_NUMBER() over(partition by customerID order by insDT) 行として、 顧客ID、合計価格、DID OP_Order から insDT>'2011-07-22' MYSQL row_number() および over() 関数の詳しい使い方については、これで終わりです。MYSQL row_number() および over() 関数の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Nginx バージョンのスムーズなアップグレードソリューションの詳細説明
目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...
目次1. 観察可能2. 高階関数3. エクスプレスボックスモデル3.1. エクスプレスボックスモデル...
ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...
Navicat で MySql スケジュールタスクを作成する詳細な説明イベントは、MySQL が特定...
概要: Web ページをより美しく見せるために、ここでは CSS3 でよく使用されるスタイルをいくつ...
目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...
目次序文環境インストールMySQLコンテナを作成して起動する落とし穴を避けるための注意MySQLコン...
導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...
目次1.まず、main.jsページを設定します2. 対応するパスの下で言語パックを構成します。ここに...
この記事では主に、レイアウトに役立つ、HTML ページ内の一部のコンテンツを固定してスクロール時にス...
障害者の定義と使用法disabled 属性はブール属性です。 disabled 属性は、テキスト領域...
数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...
JSはショッピングカート内の商品の合計金額を計算して参考とします。具体的な内容は以下のとおりです。質...
目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...
目次WebSocketを使用する理由ソケット.ioオープンソースプロジェクト効果プレビューアプリイン...