ホームページ >データベース >mysql チュートリアル >SQL データベース内の各グループの最大値を効率的に選択するにはどうすればよいですか?

SQL データベース内の各グループの最大値を効率的に選択するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-16 13:10:01556ブラウズ

How to Efficiently Select the Maximum Value for Each Group in a SQL Database?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。