MySQL

MAX値を取得してみる!SQL超初心者の勉強

SQL

MAX()を使うとカラムの中のMAX値(最大値)を取得することができます。
MAX()はよく使うと聞いたので使い方を覚えようと思います。

動作環境

SQL FIDDLEでMySQL5.6、PostgreSQL9.6、SQLiteで動作確認しました。
下記文章は主にPostgreSQLで仕様で調べています。

MAX()とは

MAX()とはMAX関数とも呼ばれテーブルの中から指定したカラムの最大値を取得することができます。

反対にMIN()もあり、こちらは最小値を取得する時に使用されます。
集約関数という種類に分類されます。

構文

SELECT文での例。

SELECT MAX(カラム) FROM テーブル名

複数カラムを読み込む時はGroup Byを使って他の列はまとめる必要があります。

実際にMAX()を利用して最大値を取得してみよう!

サンプルコードで実際にMAX()の動きを確認してみます。

準備

以下のテーブルを使用します。

itemiditemnamequantityarea
1プリン25大阪
2ゼリー20大阪
3ゼリー30東京
4プリン15大阪
5プリン60東京

上記テーブルの作成用コードです。

— CREATE文 item テーブル
CREATE TABLE item (
ItemID numeric(8, 0) unique not null,
ItemName character varying (20),
Quantity numeric(8, 0),
AREA character varying (20),
primary key(ItemID)
);
— itemテーブル用INSERT文
insert into item
values(0001, ‘プリン’, 25, ‘大阪’),
(0002, ‘ゼリー’, 20, ‘大阪’),
(0003, ‘ゼリー’, 30, ‘東京’),
(0004, ‘プリン’, 15,’大阪’),
(0005, ‘プリン’, 60, ‘東京’);

Max()サンプルコード 最大値のみ取得

SELECT
MAX(quantity)
FROM
item

■ 結果

max
60

Max()サンプルコード 最大値と他の列取得

ItemNameごとに最大値を取得します。
集約関数を使用する際に他の列も合わせて表示する際にはGroup Byを使用して列をグループ化する必要があります。

SELECT
ItemName ,
MAX(quantity)
FROM
item
GROUP BY
ItemName

■ 結果

itemnamemax
プリン60
ゼリー30

グループ化したことでプリンとゼリー、それぞれの最大値が表示されました。

上記のテーブルではさほど見た目の変化はありませんが、ItemNameとAreaごとに最大値を取得してみましょう。

SELECT
ItemName ,
AREA,
MAX(quantity)
FROM
item
GROUP BY
ItemName,
Area

※ PostgreSQLの場合Group ByではSELECTで登場する関数以外をGroup byに書く必要があります。MySQL, SQLliteでは全て書く必要はない。

■ 結果

itemnameareamax
プリン大阪25
ゼリー大阪20
ゼリー東京30
プリン東京60

おわり

Group byのことをいつも忘れてしまう。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です