GoogleスプレッドシートのQUERY(クエリ)関数は、スプレッドシート内の膨大なデータを柔軟にフィルタリング(抽出)、並び替え、集計するための非常に強力なツールです。本記事では、QUERY関数で使用できる代表的なクエリ(命令文)の一覧を具体例とともに紹介します。
QUERY関数の基本構文
=QUERY(データ範囲, クエリ, [ヘッダー行数])
数式の具体例:
=QUERY(A1:D10, "SELECT A, B WHERE C > 100", 1)
この例では、データ範囲「A1:D10」から列Aと列Bを抽出し、さらに列Cの値が100より大きい行だけを取得します(1行目は見出しとして扱います)。
主要クエリ(句)一覧
SELECT(列の選択・抽出)
| クエリ例 |
説明と役割 |
SELECT A, B |
列Aと列Bのみを選択して抽出します。 |
SELECT * |
データ範囲内にあるすべての列を選択して抽出します。 |
WHERE(条件による行のフィルタリング)
| クエリ例 |
説明と役割 |
WHERE C > 100 |
列Cの値が100より大きい行のみを取得します。 |
WHERE D = 'Tokyo' |
列Dの文字列が「Tokyo」と完全に一致する行を取得します。 |
WHERE A CONTAINS 'abc' |
列Aに文字列「abc」が含まれている行を取得します。 |
ORDER BY(データの並び替え)
| クエリ例 |
説明と役割 |
ORDER BY B |
列Bの値を基準にして「昇順(小さい順・五十音順)」に並び替えます。 |
ORDER BY C DESC |
列Cの値を基準にして「降順(大きい順・逆順)」に並び替えます。 |
LIMIT(取得する行数の制限)
| クエリ例 |
説明と役割 |
LIMIT 10 |
抽出されたデータの上位10行のみを取得します。 |
LIMIT 1 |
抽出されたデータの最初の1行のみを取得します。 |
OFFSET(データ取得の開始位置を指定)
| クエリ例 |
説明と役割 |
OFFSET 5 |
先頭の5行をスキップし、6行目以降のデータを取得します。 |
LIMIT 10 OFFSET 5 |
先頭の5行をスキップし、そこから10行分のデータを取得します。 |
GROUP BY(データのグループ化・集計)
※GROUP BYを使用する場合、SELECT句にはグループ化する列と集計関数(SUM、AVG、COUNTなど)のみを指定する必要があります。
| クエリ例 |
説明と役割 |
GROUP BY A |
列Aの値が同じデータをグループとしてまとめます。 |
SELECT A, SUM(B) GROUP BY A |
列Aの値ごとに、対応する列Bの数値を合計した値を取得します。 |
PIVOT(クロス集計・ピボットテーブルの作成)
| クエリ例 |
説明と役割 |
PIVOT B |
列Bの値を新しい「列見出し」として横方向に展開し、クロス集計を行います。 |
具体的なデータを使った使用例
以下のような売買データシートを元に、QUERY関数を適用してみます。
|
A列(商品) |
B列(価格) |
C列(カテゴリ) |
| 1行目 |
商品 |
価格 |
カテゴリ |
| 2行目 |
リンゴ |
100 |
果物 |
| 3行目 |
オレンジ |
120 |
果物 |
| 4行目 |
キャベツ |
80 |
野菜 |
数式とクエリの例:
=QUERY(A1:C4, "SELECT A, B WHERE C = '果物' ORDER BY B DESC", 1)
この数式の結果:
カテゴリ(C列)が「果物」である行の、商品名(A列)と価格(B列)を抽出し、価格の高い順(降順)に並び替えて出力します。