Googleスプレッドシートで売上表やシフト表などを扱っていると、「売上が多い順に並べたい」「担当者ごとに合計を出したい」といったケース、よくありますよね。
そんなときに使えるのが、QUERY関数の ORDER BY
(並び替え)と GROUP BY
(集計)です。
一見むずかしそうに見えますが、使い方をおさえればとても便利。
この記事では、初心者にもわかりやすく、実務でよくある具体例をまじえて解説します。
なお、QUERY関数の基本的な使い方は以下の記事を参考にしてください♪

QUERY関数で並び替え!ORDER BYの使い方
まずは、データを昇順・降順に並べる「ORDER BY」から解説します。
例:売上の高い順に並べたい
以下のような売上表(A1:D6)を想定します。
日付 | 商品名 | 売上 | 担当者 |
---|---|---|---|
6/1 | りんご | 800 | 佐藤 |
6/2 | みかん | 1200 | 鈴木 |
6/3 | ぶどう | 15000 | 田中 |
6/4 | バナナ | 9800 | 佐藤 |
6/5 | もも | 5000 | 高橋 |
売上(C列)が高い順に並べるには
=QUERY(A1:D6, "SELECT A, B, C, D ORDER BY C DESC", 1)

ORDER BY の書き方
ORDER BY 列 [ASC|DESC]
キーワード | 意味 |
---|---|
ASC | 昇順(小さい順) ※省略可能 |
DESC | 降順(大きい順) |
例:売上が少ない順に並べるならこう書きます👇
=QUERY(A1:D6, "SELECT A, B, C, D ORDER BY C ASC", 1)

WHEREとORDER BYを組み合わせる
「佐藤さんが担当した商品の売上を、高い順に並べたい」ときはこうなります👇
=QUERY(A1:D6, "SELECT A, B, C, D WHERE D='佐藤' ORDER BY C DESC", 1)

WHERE
で条件を絞ってから、ORDER BY
で並べ替え。
この組み合わせ、実務でもよく使います!
担当者ごとの売上を集計!GROUP BYの使い方
次に、データを「まとめて集計」する GROUP BY
を見てみましょう。
例:担当者ごとの売上合計を出す
=QUERY(A1:D6, "SELECT D, SUM(C) GROUP BY D", 1)
担当者ごとの売上合計を計算する基本例です。
ですが、このままだと、見出しが「sum 売上」のように分かりにくい表記になります。

集計結果の列名を自分で変更したいときは、LABEL
句を使います!
例:担当者ごとの売上合計をわかりやすく表示
=QUERY(A1:D6, "SELECT D, SUM(C) GROUP BY D LABEL D '担当者', SUM(C) '売上合計'", 1)
このように書くと、表の見出しが「担当者」「売上合計」になって見やすくなります。

GROUP BYのルール(最低限おさえておきたいこと)
QUERY関数で GROUP BY
を使うときは、SELECT句に書く内容に注意が必要です!
基本ルール
GROUP BY
で指定した列 → そのまま SELECT に書ける- その他の列 → 集計関数(SUM、AVGなど)で囲む必要あり
これを守らないと「列○はGROUP BYに含まれていません」というエラーになります。
例:担当者ごとの売上合計
=QUERY(A1:D6, "SELECT D, SUM(C) GROUP BY D", 1)
- D列(担当者)は GROUP BY 対象なのでそのままでOK
- C列(売上)は集計するので
SUM(C)
のように書く
よく使う集計関数
関数 | 内容 |
---|---|
SUM() | 合計 |
AVG() | 平均 |
COUNT() | 件数カウント |
MAX() | 最大値 |
MIN() | 最小値 |
WHERE・GROUP BY・ORDER BYを組み合わせる例
「佐藤さんが担当した商品の売上合計を多い順に並べたい」場合はこう書きます。(ちょっと見やすくしました♪)
=QUERY(A1:D6, "SELECT B, SUM(C)
WHERE D='佐藤'
GROUP BY B
ORDER BY SUM(C) DESC
LABEL B '商品名', SUM(C) '売上合計'", 1)

よくあるエラーと対処法
エラー内容 | 原因と対処 |
---|---|
列XはGROUP BY句に含まれていません | SELECTに集計していない列が含まれている。GROUP BYに追加するか、集計関数で囲む。 |
データが正しく並び替えされない | ORDER BYで指定している列が文字列として扱われている場合があります。列のデータ形式を確認しましょう。 |
まとめ
ORDER BY
で昇順(ASC)・降順(DESC)を自由に切り替え可能WHERE
と組み合わせて条件付きで並び替えもできるGROUP BY
で集計ができるが、見出しは自動だと分かりにくいこともLABEL
句で集計列やその他の列の名前を好きな見出しに変更できる
QUERY関数をうまく使いこなして、スプレッドシートでのデータ処理をもっと効率よく、見やすくしましょう!