
QUERY関数の概要
Googleスプレッドシートがデータベースのように動作すればと思ったことはありませんか?その答えがQUERY関数です。この関数を使えば、SQL(Structured Query Language)に似た文法でデータを分析、フィルタリング、変換できます。FILTERやSORT、UNIQUEなどの複数の関数を重ねる代わりに、しばしば一つのシンプルで読みやすい式で全てを達成できます。
このガイドでは、QUERY関数の機能、クエリの書き方、そして実際のデータ分析タスクへの応用方法について説明します。
QUERY関数とは?
QUERY関数は、クエリ文字列を使用してデータセットからデータを取得し操作します。構文は次のとおりです:
=QUERY(data, query, [headers])
- data: 分析するセル範囲
- query: SQLに似た言語で記述されたテキスト文字列
- headers(オプション): ヘッダー行の数
例:
=QUERY(A1:D10, "SELECT A, B WHERE C > 100", 1)
これは、C列が100を超える行のA列とB列を選択します。
QUERYの構文を理解する
QUERYの言語では、SQLのキーワードを使用します。ここでは最も重要なものを紹介します:
- SELECT: 列の選択
- WHERE: 行のフィルタ
- ORDER BY: 結果の並べ替え
- GROUP BY: データの集計
- LIMIT: 行数の制限
- LABEL: 列名の変更
列の参照
列は二通りの方法で参照できます:
- 文字で: A, B, C
- Col表記で: Col1, Col2, Col3
例:
=QUERY(A1:C10, "SELECT Col1, Col3", 1)
基礎的な例
1. WHEREでデータをフィルタリング
売上データがあるとします。列は日付、商品、収益です。
=QUERY(A1:C100, "SELECT A, B WHERE C > 500", 1)
これは、収益が500を超える行を返します。
2. ORDER BYでデータを並べ替え
=QUERY(A1:C100, "SELECT A, B, C ORDER BY C DESC", 1)
これは収益を降順に並べ替えます。
3. 結果の制限
=QUERY(A1:C100, "SELECT A, B LIMIT 5", 1)
これは最初の5行のみを表示します。
テキストと日付の操作
テキスト条件
テキスト値はシングルクォートで囲みます:
=QUERY(A1:C100, "SELECT A, B WHERE B = 'パソコン'", 1)
部分一致と正規表現
CONTAINS: 部分一致MATCHES: 正規表現
例:
=QUERY(A1:C100, "SELECT A WHERE B CONTAINS 'Pro'", 1)
日付のフィルタリング
日付は特定の形式が必要です:
=QUERY(A1:C100, "SELECT A WHERE A > date '2024-01-01'", 1)
GROUP BYによる集計
QUERY関数は集約関数を使用してデータを要約できます:
SUM()AVG()COUNT()MAX()MIN()
例:商品別の総収益
=QUERY(A1:C100, "SELECT B, SUM(C) GROUP BY B", 1)
これは商品ごとにデータをグループ化し、総収益を計算します。
ラベルの追加
=QUERY(A1:C100, "SELECT B, SUM(C) GROUP BY B LABEL SUM(C) '総収益'", 1)
複数条件の組み合わせ
条件をANDやORで組み合わせることができます:
=QUERY(A1:C100, "SELECT A, B WHERE C > 500 AND B = 'Laptop'", 1)
実際の使用例
1. 売上ダッシュボード
QUERYを使用して動的なサマリテーブルを作成します:
=QUERY(A1:D500, "SELECT B, SUM(D) GROUP BY B ORDER BY SUM(D) DESC", 1)
これは収益順に商品を並べたランキングを作成します。
2. 従業員の業績追跡
=QUERY(A1:E200, "SELECT C, AVG(E) GROUP BY C", 1)
これは部門ごとの平均パフォーマンススコアを計算します。
3. データクリーニング
重複を削除します:
=QUERY(A1:B100, "SELECT A, B GROUP BY A, B", 1)
より良いQUERY式を書くためのヒント
- シンプルに始める: 一歩一歩クエリを作成
- 改行を使う: 読みやすさのために別のセルでクエリを書く
- ヘッダーを確認: ヘッダー数が間違っているとエラーが発生
- Col表記を使う: 列名が変わる際に便利
- 条件をテストする: 条件を組み合わせる前にフィルタを確認
一般的なエラーとその修正
1. 「クエリ文字列を解析できません」
通常は次の原因です:
- 引用符が不足
- 構文が不正
- 列名が間違っている
2. 結果が不正確
次を確認:
- データ型(テキスト vs 数値)
- 日付形式
- ヘッダー行数
3. 出力が空白になる
フィルタ条件が一致する行を返さない場合です。
他の関数とQUERYの比較
QUERYを他のツールの代わりに使用するタイミング:
- QUERYを使用: 一つの式で多段階の変換を行う場合
- FILTERを使用: 単純な行フィルターの場合
- SORTを使用: 基本的なソートの場合
- ピボットテーブルを使用: ビジュアルサマリの場合
QUERYは、Sheetsを離れることなくSQLライクな制御を行いたい場合に役立ちます。
応用例: 一つの式での完全な分析
複数の概念を組み合わせてみましょう:
=QUERY(A1:D500, "SELECT B, SUM(D) WHERE D > 100 GROUP BY B ORDER BY SUM(D) DESC LIMIT 10 LABEL SUM(D) 'トップ収益'", 1)
この式は:
- 収益が100を超える行をフィルターします
- 商品ごとにグループ化します
- 総収益を計算します
- 結果を降順に並べ替えます
- 出力をトップ10に制限します
- 列名を変更します
QUERYが最適でない場合
強力ではありますが、QUERYには制限があります:
- SQLライクな構文の習得が必要
- 初心者には直感的でない
- エラーメッセージが曖昧なことがある
簡単なケースではFILTERとSORTを組み合わせる方が簡単な場合もあります。
まとめ
GoogleスプレッドシートのQUERY関数は、データ分析に利用可能な最も強力なツールの一つです。データベース風のクエリ機能を馴染みのあるスプレッドシート環境に持ち込むことで、データを効果的にクリーンアップ、フィルタリング、サマライズできます。
SELECT、WHERE、GROUP BYといった基本的な構造を理解すれば、複雑なマルチフォーミュラ設定を一つの洗練された解決策に置き換えることができます。小さな例から始めて、自信をつけ、徐々に実際のデータセットに適用してみてください。
練習を重ねることで、QUERYは単なる関数ではなく、生産性を飛躍的に向上させるツールとなります。
