クエリ関数(Query関数)の使い方 - GROUP BY & 集計関数Max/Min

この記事では、クエリ関数(Query関数)でGroup Byと集計関数Max/Minを使ってグループ毎のデータの最大値と最小値を算出する方法を勉強します。

QUERY関数の基礎についてはこちらの記事をご覧ください。
クエリ関数内のMax/Minの使い方に関してはこちら

Group Byと集計関数Max/Minは以下の様に使います。
Maxを使ってグループ毎の最大値を算出する場合
=QUERY(範囲, "SELECT 見出しの列, Max(最大値を算出したい列) Group By グループ化したい列 ",見出しの行数)

Minを使ってグループ毎の最小値を算出する場合
=QUERY(範囲, "SELECT 見出しの列, Min(最小値を算出したい列) Group By グループ化したい列 ",見出しの行数)

以下の都市の人口データを例に見ていきます。表の中で、各都道府県の中での人口の最大値と最小値を算出しましょう。

都市の人口データ

まずは、範囲を指定しましょう。表の範囲A1 - C11を指定します。
=QUERY(A1:C11

範囲の指定


次にSELECTを用いて、見出しの列を指定します。今回は各都道府県の名前を表示させたいので、B列を指定します。
=QUERY(A1:C11, "SELECT B

見出しの行を指定


次に、MaxまたはMinを用いて、データの最大値・最小値を算出したい列を指定します。列名はカッコで挟むことに注意しましょう。
人口の最大値・最小値を算出したいのでC列を指定します。

最大値の場合
=QUERY(A1:C11, "SELECT B, Max(C)

最大値を算出したい列を選択

最小値の場合
=QUERY(A1:C11, "SELECT B, Min(C)

最小値を算出したい列を選択


そして、GROUP BYを用いて、どの列をグルーピングしたいかを指定します。各都道府県名をひとつのグループにしたいので、B列を指定します。
この際、自動で同一の文字列がグルーピングされます。また、行数も指定しましょう。

最大値の場合
=QUERY(A1:C11, "SELECT B, Max(C) GROUP BY B",1)

グルーピングしたい列を指定


最小値の場合
=QUERY(A1:C11, "SELECT B, Min(C) GROUP BY B",1)

グルーピングしたい列を指定


すると、Maxを使った場合は、そのグループの中での最大値が、Minを使った場合は最小値がそれぞれ算出されます。
例えば、神奈川県は、Maxのときは横浜市の3,724,844が、Minのときは横須賀市の406,586が表示されます。

結果


スプレッドシートをご覧になる場合はこちら