SELECT MAXの基本構文
SQLのMAX関数を使うことで、その列の最大値を取得することができます。
MAXの基本構文
SELECT MAX(列名) FROM テーブル名;
本記事では、MAX関数を使用した最大値を取得する方法を解説していきます。
また「userテーブル」には、次のようなデータが格納されていることを前提としています。
ID (id) ※PK | 名前 (name) | 住所 (address) | 年齢 (age) | 部署ID (department_id) |
1001 | 鈴木一郎 | 東京都 | 44 | 1 |
1002 | 佐藤次郎 | 埼玉県 | 32 | 1 |
1003 | 田中三郎 | 千葉県 | 24 | 2 |
1004 | 伊藤四郎 | 東京都 | 22 | 2 |
1005 | 斎藤五郎 | 東京都 | 35 | 4 |
指定列の最大値を取得する
「SELECT MAX(列名)」で、指定した列名の最大値を取得することができます。
次の例では、年齢 (age)の最大値を取得しています。
SELECT MAX(age) FROM user;
■実行結果
+----------+ | MAX(age) | +----------+ | 44 | +----------+
最大値のレコードを取得する
次の例では、IDが最大値のレコードを取得しています。
■最大値のレコード取得
SELECT * FROM user
WHERE
id = (SELECT MAX(id) FROM user)
グループ化して最大値を取得する
GROUP BY句を用いてグループ化することで、グループ化ごとの最大値を求めることができます。
次の例では、部署ID (department_id)でグループ化し、部署ごとに一番高い年齢 (age)を求めています。
■GROUP BYを用いたMAX関数の使用例
SELECT department_id, MAX(age) FROM user
GROUP BY department_id;
■実行結果
+---------------+----------+ | department_id | MAX(age) | +---------------+----------+ | 1 | 44 | | 2 | 24 | | 4 | 35 | +---------------+----------+
以下の例では、部署ID (department_id)でグループ化して、同じ部署内で年齢 (age)が一番高い人の名前 (name)、住所 (address)、年齢 (age)を求めています。
■GROUP BYを用いたMAX関数の使用例2
SELECT name, address, MAX(age), department_id FROM user
GROUP BY department_id;
下記のSQLでも同様になります。
SELECT name, address, age, department_id FROM user As user1
INNER JOIN (
SELECT department_id as id, MAX(age) as maxAge
FROM sampledb.user GROUP BY department_id
)
user2 ON user1.department_id = user2.id AND user1.age = user2.maxAge
学習書の紹介
SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ) [ ミック ] 価格:2,068円 |
SQL 第2版 ゼロからはじめるデータベース操作
大好評のSQL定番入門書が改訂! SQLの書き方からアプリでの利用までしっかり学ぼう!
プログラミング学習シリーズ『SQL ゼロからはじめるデータベース操作』は、「データベースやSQLがはじめて」という初心者を対象に、プロのデータベース(DB)エンジニアである著者がSQLの基礎とコツをやさしく丁寧に教える入門書です。
学習書のお求めはこちらから → IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』