MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテーブルの各グループごとに最大値を取得する方法

MySQLでテーブル内の各値(グループ)ごとの最大値を取得したい場合は、GROUP BY句MAX()関数を組み合わせて使用します。GROUP BY句が指定したカラムの値ごとに行をグループ化し、MAX()関数がそのグループ内での最大値を返してくれます。

ここでは、「国名」と「人口」を格納するサンプルテーブルを使って、具体的な手順を解説していきます。

1. サンプルテーブルを作成する

まず、CREATE TABLE文でテーブルを作成しましょう。

mysql> create table DemoTable
-> (
-> CountryName varchar(20),
-> Population int
-> );
Query OK, 0 rows affected (0.56 sec)

2. テーブルにデータを挿入する

次に、INSERTコマンドを使っていくつかのレコードを挿入します。同じ国名(US・UK)のデータを複数登録している点に注目してください。

mysql> insert into DemoTable values('US',560);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('UK',10090);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('UK',8794);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('US',1090);
Query OK, 1 row affected (0.21 sec)

3. 登録されたデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+-------------+------------+
| CountryName | Population |
+-------------+------------+
| US | 560 |
| UK | 10090 |
| UK | 8794 |
| US | 1090 |
+-------------+------------+
4 rows in set (0.00 sec)

4. 各グループごとの最大値を取得する

それでは本題です。以下のクエリを実行すると、国名ごとに人口の最大値を取得できます。

mysql> select CountryName,max(Population) from DemoTable group by CountryName;

実行結果は次のようになります。

+-------------+-----------------+
| CountryName | max(Population) |
+-------------+-----------------+
| US | 1090 |
| UK | 10090 |
+-------------+-----------------+
2 rows in set (0.00 sec)

結果を見ると、「US」では最大値の1090、「UK」では最大値の10090がそれぞれ返されていることがわかります。このように、GROUP BY句でカラムを指定し、MAX()関数と組み合わせるだけで、各グループの最大値を簡単に抽出できます。

なお、同様の手法としてMIN()(最小値)、AVG()(平均値)、SUM()(合計値)、COUNT()(件数)などの集計関数もGROUP BY句と組み合わせて使えるので、用途に応じて活用すると便利です。

  1. MySQLで最大の累積値とその出現回数を取得するクエリの書き方

    カラム同士を掛け合わせた値(累積値)の中から最大値と、その出現回数を取得したい場合は、集計関数 COUNT(*) をサブクエリと組み合わせて使用します。あわせて GROUP BY 句も活用します。テーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table demo23-> (-> id int not null auto_increment primary key,-> value1 int,-> value2 int-> );Query OK, 0 rows affected (1.65 sec)レコードの挿入続い

  2. MySQLで列の最大値を取得する方法をわかりやすく解説

    MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(