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関数をうまく使いこなして、スプレッドシートでのデータ処理をもっと効率よく、見やすくしましょう!

