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 をサポートするように設定するためのサンプル コード
序文Linux サーバーを操作および管理するときに、最もよく使用されるコマンドの 1 つが nets...
1つ、 G:\MySQL\MySQL Server 5.7\bin> mysqld --ini...
前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...
CSS3アニメーションとJSアニメーションの違いJSはフレームアニメーションを実装しますCSS3はト...
1.Tomcatの最適化構成(1)Tomcatのcatalina.batを変更するJavaをサーバー...
1. テキストの書式設定: この例では、HTML ファイル内のテキストを書式設定する方法を示します...
1. 組み込み関数1. 数学関数ランド()丸め(数値) ceil(数値)階数(数値)ランダム丸め切り...
外部結合の構文は次のとおりです。フィールド名を選択FROM テーブル名 1 LEFT|RIGHT|F...
背景このバグは滾動條占據空間ことで発生していました。いくつかの情報を確認して、ようやく解決しました。...
Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...
序文フロントエンド コードの記述では、「互換性」という言葉から逃れることはできません。過去の PC ...
TOP 観察: IO 待機に占められる CPU 時間の割合。30% を超えると、IO の負荷が高くな...
js 配列はどこでも使用されているため、おそらく誰もがよく知っているでしょうが、配列クラス (疑似配...
目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...