MySQL でグループ化した後、各グループの最大値を取得する詳細な例 1. テストデータベーステーブルは次のとおりです。 テーブルテストの作成 ( `id` int NULLではない自動増分、 `name` varchar(20) NULLでないデフォルト '' `score` int NULLでないデフォルト0、 主キー (`id`) )エンジン=InnoDB CHARSET=UTF8; 2. 次のデータを挿入します。 mysql> テストから * を選択します。 +----+----------+-------+ | ID | 名前 | スコア | +----+----------+-------+ | 1 | ジェイソン | 1 | | 2 | ジェイソン | 2 | | 3 | ジェイソン | 3 | | 4 | リンジエ | 1 | | 5 | リンジエ | 2 | | 6 | リンジエ | 3 | | 7 | 暁頂 | 1 | | 8 | 暁頂 | 2 | | 9 | 暁頂 | 3 | | 10 | ハスト | 2 | | 11 | ハスト | 3 | | 12 | ハスト | 1 | | 13 | ははは | 1 | | 14 | ははは | 2 | | 15 | デンジ | 3 | | 16 | デンジ | 4 | | 17 | デンジ | 5 | | 18 | シャジ | 3 | | 19 | シャジ | 4 | | 20 | シャジ | 2 | +----+----------+-------+ 3. 以下が重要なポイントです。目的は、名前でグループ化し、グループ化後に各グループの最高スコアを取得することです。SQLは次のとおりです。 a.* をテスト a から選択し、内部結合 (名前、最大 (スコア) スコアをテスト グループから名前で選択)b を a に対して選択します。 name=b.name かつ a.score=b.score は a.name で順序付けられます。 もちろん、上記のa.nameによる最後の順序は削除できます。 4. テスト結果は次のとおりです。 +----+----------+-------+ | ID | 名前 | スコア | +----+----------+-------+ | 3 | ジェイソン | 3 | | 6 | リンジエ | 3 | | 9 | 暁頂 | 3 | | 11 | ハスト | 3 | | 14 | ははは | 2 | | 17 | デンジ | 5 | | 19 | シャジ | 4 | +----+----------+-------+ 5. インターネット上の多くの方法は間違っており、例えば以下のようなもので、個人的にテストしてもうまくいきません。 select * from (select * from test order by score desc) t group by name order by score desc limit 4; 名前でテストグループからスコア、最大(スコア)を選択します。 select * from test where score in (select max(score) from test group by name); select * from test where score in (select substring_index(group_concat(score order by score desc Separator ','),',',1) from test group by name); select * from (select name,score,ROW_NUMBER() over(group by name order by score desc) as rowNum from test) rank where rank.rowNum <=1 order by rank.score desc; select * from( select StoresNo,[CustomerCaseNo],[PaymentsTime], ROW_NUMBER() over(partition by CustomerCaseNo order by [PaymentsTime] desc) as rowNum BAL_paymentsSwiftInfo から、StoresNo='zq00000034' の場合) ランク付けされ、ranked.rowNum <= 1 で、ranked.CustomerCaseNo、ranked.PaymentsTime で順序付けされます。 select * from (select * from test order by score desc) を a.name でグループ化して選択します。 読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Docker ベースの Etcd 分散デプロイメントの方法と手順
>>: nginx を https をサポートするように設定するためのサンプル コード
最近MySQLデータベースのバージョンを変更する必要があり、それを記録するために記事を書きます1. ...
mysqlのrootアカウント、普段はlocalhostか127.0.0.1で接続しています。会社の...
この記事では、Jiugonggeモバイルパズルゲームを実装するためのJavaScriptの具体的なコ...
イベントの説明onactivate: オブジェクトがアクティブ要素として設定されたときに発生します。...
序文Nginxの組み込みモジュールは、同時リクエスト数の制限とリクエストのソースの制限をサポートして...
環境変数の設定の簡単な説明プログラムは、環境によって異なる環境変数を必要とします。たとえば、実稼働環...
Windows 10 で MySql データベースの解凍バージョンをインストールするステップ 1: ...
テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...
この記事では主に、echart を使用してパーセンテージを表示する Vue の円グラフデータ部分を紹...
CSS3 カテゴリ メニューの効果は次のとおりです。 html <html> <ヘ...
今日、MySQL の新しいバージョン (8.0.21) をインストールしましたが、ノード フレームワ...
Docker はコンテナに相当し、必要な動作環境に応じて対応する動作環境を構築できます。このとき、各...
レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...
この記事の例では、データのページング効果を実現するためのjsオブジェクトの具体的なコードを参考までに...
目次1.まず、main.jsページを設定します2. 対応するパスの下で言語パックを構成します。ここに...