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 をサポートするように設定するためのサンプル コード
textarea の形式は保存時にデータベースに保存できますが、表示時には /n と相互に変換できな...
かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...
疑問が生じるこの質問は、ファイルのダウンロードを記述しているときに発生しました。HttpServle...
目次1. 操作要素1.1. 要素コンテンツの変更1.2. innerText と innerHtml...
マップ タグはペアで表示する必要があります。 <map> ....</map>...
目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...
Git 入門Git は、Linux(R) カーネル開発の管理を支援するために 2005 年に Lin...
ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...
1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...
1. BIOSを確認するまず、コンピュータの起動モードを確認します。win+R と入力し、msinf...
PHP Linux に XML 拡張機能をインストールする1. PHPインストールソースパッケージを...
目次序文エラーオブジェクト投げる試して…捕まえて…最後に最終ルールトライ/キャッチパフォーマンスウィ...
1. PPTP VPNを構築するには、ポート1723とGREプロトコルを開く必要があります。 1. ...
事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...
Docker Compose は、複雑なアプリケーションを定義および実行するための Docker ツ...