この記事では、クエリ関数(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が表示されます。
結果
スプレッドシートをご覧になる場合は
こちら