ホームページ >データベース >mysql チュートリアル >SQL データベース内の各グループの最大値を効率的に選択するにはどうすればよいですか?
SQL での各グループの最大値の抽出
一般的な SQL タスクには、テーブル内の各一意のグループの最大値の取得が含まれます。 これをテーブルの例で説明してみましょう:
Name | Value | AnotherColumn |
---|---|---|
Pump 1 | 8000.0 | Something1 |
Pump 1 | 10000.0 | Something2 |
Pump 1 | 10000.0 | Something3 |
Pump 2 | 3043 | Something4 |
Pump 2 | 4594 | Something5 |
Pump 2 | 6165 | Something6 |
私たちの目標は、各 Value
(ポンプ) の最高の Name
を見つけて、次の結果をもたらすことです。
Name | Value |
---|---|
Pump 1 | 10000.0 |
Pump 2 | 6165 |
サブクエリを使用して各名前の最大値を検索する単純なアプローチでは、複数の行が同じ最大値を共有する場合、エントリの重複が発生することがよくあります。
<code class="language-sql">select a.name, value from out_pumptable as a, (select name, max(value) as value from out_pumptable group by name) g where a.name = g.name and g.value = a.value</code>
ただし、より効率的で簡潔な解決策は GROUP BY
句を利用します。
<code class="language-sql">select name, max(value) from out_pumptable group by name;</code>
このクエリは、Name
列に基づいて行をグループ化し、各グループ内の最大の Value
を選択して、結果の重複を効果的に回避し、目的の出力を提供します。
以上がSQL データベース内の各グループの最大値を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。