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 をサポートするように設定するためのサンプル コード
Dockerイメージ内のファイルを表示する方法1. すでに実行中の場合すでに実行中のイメージについて...
MySQL のデフォルトの時間タイプ (datetime と timestamp) の精度は秒です。...
目次序文アドバンテージ:欠点: 1. レスポンシブな使用効果2. ステータスが同期されていないRea...
今日、Baiduのページで練習していたところ、検索ボックスとボタンの余白とパディングの値が0に設定さ...
優れた HTML コードは美しい Web サイトの基礎となります。私が CSS を教えるときは、まず...
目次1. Cocos Creatorでのオーディオ再生の基本1. 基本2. 一般的な方法2. Coc...
MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...
0. 準備: • iTunesを閉じる• タスクマネージャーでiTunesから始まるサービスを終了し...
目次1. 複雑なページデータ領域をコンポーネントにカプセル化する2. 大きな画像の使用を避ける3. ...
IE の条件付きコメントは、通常の (X)HTML コメントに対する Microsoft 独自の (...
1. <dl>はリストを定義し、<dt>はリスト内の項目を定義し、<d...
Docker はプロセスを中核としてシステムリソースを分離する管理ツールです。分離は、オペレーティン...
いつも、気づかないうちに時間というのは驚くほど早く過ぎていきます。小暑が過ぎ、中暑に突入しました。太...
1つ。 Mysql Binlog フォーマットの紹介 Mysql binlog ログには、State...
1. Web ページをデザインするときに、幅を決定するのは非常に面倒な作業です。 jb51.net ...