【QUERY関数】group by句とmax・min関数で列の最大値・最小値を求める


QUERY関数12アイキャッチ

みなさんこんにちは!
もり(@moripro3)です。

GoogleスプレッドシートQUERY関数の使い方をシリーズでお届けしています!

前回の記事では、group by句とavg関数を使用して、列の値の平均値を算出する方法を紹介しました。

【QUERY関数】group by句とavg関数で列の値の平均値を求める
GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第十一回目は、group by句とavg関数で項目毎の値の平均値を求める方法です。format句で書式設定をして小数点以下の桁数を処理する方法も紹介しています。

QUERY関数の第2引数[クエリ]には5種類の集計関数が使用でき、シリーズ直近3回の記事でcount関数, sum関数, avg関数を紹介しました。

この記事では残りの2つ、max関数min関数を紹介します。

関数名 説明
count() 列の要素数を返す
sum() 列の値の合計値を返す
avg() 列の値の平均値を返す
max() 列の最大値を返す
min() 列の最小値を返す

それでは備品購入リストのサンプルを用いて、見ていきましょう!

query12-1

スポンサーリンク

列の最大値を求めるmax関数

max関数は、指定列の最大値を求める関数です。

max(列)

まずは最も簡単な使い方です。D列「単価」の最大値を求めます。

=query(A:E,"select max(D)",1)

query12-8

「単価」の列で最も大きい値20000を取得できました。

列の最小値を求めるmin関数

min関数は、指定列の最小値を求める関数です。

min(列)

D列「単価」の最小値を求めます。200が取得できます。

=query(A:E,"select min(D)",1)

query12-2

最大値・最小値を合わせて求める

max関数とmin関数をカンマ区切りで指定すると、1行でまとめて2つの値を取得できます。

=query(A:E,"select min(D),max(D)",1)

query12-3

すべてのデータ型に使用できる

max関数とmin関数は、数値以外にも、日付・文字列などすべてのデータ型に使用できます。

  • 日付 → 日付の小さい(早い)順に比較
  • 文字列 → アルファベット順に比較(大文字と小文字は区別される)

日付データであるA列「購入日」を指定すると、下記の通り日付を取得できます。

  • min関数(最小値) = 最も早い 4月27日
  • max関数(最大値) = 最も遅い 5月6日
=query(A:E,"select min(A),max(A)",1)

query12-4

where句で抽出条件を指定する

QUERY関数の5種類の集計関数は、where句と併せて使うことができます。

たとえば、リストの中から「5月1日以降に購入した備品」の最小単価と最大単価を求めてみます。select句のあとに、where句で日付条件を指定します。

=query(A:E,"select min(D),max(D) where A >= date '2019-05-01'",1)

query12-5

5月1日以降に購入した備品の「最小単価 200」と「最大単価 5000」を取得できました。

where句での日付の指定方法は少し特殊なので、こちらの記事で紹介しています。

【QUERY関数】where句で日付データを条件にして行を抽出する
GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第五回目は、where句の条件に日付を指定する方法です。今日期限のタスク一覧・今月期限のタスク一覧の抽出方法を紹介しています。

他にも、where句を使用して「OA機器の最小単価と最大単価を求める」なんてこともできますね。色々組み合わせて使ってみてください。

項目ごとの最大値と最小値を求める

group by句を使用して、購入者ごとの最大値・最小値を求めることも可能です。group by句の使用方法は、他の集計関数(count, sum, avg)と同じです。

select句とgroup by句で同じ列を指定します。ここではE列の購入者です。

=query(A:E,"select E,min(D),max(D) group by E",1)

query12-6

E列「購入者」ごとの最小単価と最大単価を取得できました。

QUERY関数の第1引数に列全体を指定しているため、空白行も集計されているので、空白行は除外しましょう。

where 列 is not null

where句を使用して、null(空白)でない行(なんらかのデータが存在する行)のみを集計対象にすればOKです。

=query(A:E,"select E,min(D),max(D) where D is not null group by E",1)

query12-7

まとめ

今回の記事では、max関数, min関数, group by句を紹介しました。

  • max関数で列の最大値を取得する
  • min関数で列の最小値を取得する
  • group by句で項目ごとの最大値と最小値を取得する

max関数 と min関数 は、数値だけでなく、日付・文字列データも比較できる点がポイントです。

さて次回は、group by句を徹底解説します。これまで、「区分ごとの集計」「購入者ごとの集計」など、1つの列のみの集計方法を紹介してきましたが、group by句は、複数列の集計もできるんですよ!

【QUERY関数】group by句で複数の列をグループ化して集計する
GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第十三回目は、group by句で複数の列をグループ化して集計する方法を紹介しています。グループ化する列の優先順位についても解説しています。

連載目次:GoogleスプレッドシートQUERY関数をマスターしよう

スプレッドシートのQUERY関数を使って、データ抽出・集計を効率化する方法を紹介しています。

  1. スプレッドシートのQUERY関数を使う最初の一歩!クエリを理解する
  2. QUERY関数の基本!別シートのデータからselect句で列を取得する方法
  3. 【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する
  4. 【QUERY関数】where句とlike演算子を使用して指定の文字を含む行を抽出する
  5. 【QUERY関数】where句で日付データを条件にして行を抽出する
  6. 【QUERY関数】where句で時刻データを条件にして行を抽出する
  7. 【QUERY関数】where句でand,orを使用して複数条件を指定する
  8. 【QUERY関数】order by句で抽出結果を昇順・降順ソートする
  9. 【QUERY関数】group by句とcount関数で列のデータ数をカウントする
  10. 【QUERY関数】group by句とsum関数で列の値の合計値を求める
  11. 【QUERY関数】group by句とavg関数で列の値の平均値を求める
  12. 【QUERY関数】group by句とmax・min関数で列の最大値・最小値を求める
  13. 【QUERY関数】group by句で複数の列をグループ化して集計する

タイトルとURLをコピーしました