こんにちは!セイトです。
前回は「SQL基礎」の記事で、SQLの基本的な命令文である SELECT, WHERE, ORDER BY について解説しました。
そして、最後の「つまづきやすいポイント 」で、SQLを気軽に試す方法として、Googleスプレッドシートの QUERY(クエリ)関数を少しだけご紹介しました。
そこで今回は、「スプレッドシートでSQLを体験してみよう」というテーマで、QUERY 関数の使い方を解説していきます!
1. QUERY関数って、そもそも何?
QUERY 関数は、Googleスプレッドシートの関数の一つで、シート内のデータに対して、SQLによく似た命令文で「検索」「絞り込み」「並び替え」ができる、とても強力な機能です。
前回の記事で「SQLを試すにはデータベースの環境構築が…」と書きましたが、QUERY 関数なら、Googleアカウントさえあれば(スプレッドシートが使えれば)、今すぐSQLにそっくりな体験ができます。
※残念ながら、Excelには(2025年現在)この QUERY 関数はありませんので、Googleスプレッドシートを使って試してみてください。
2. 準備:サンプルデータを用意しよう
習うより慣れろ、です!
まずは、Googleスプレッドシートを開き、前回の記事で使った「商品(products)」テーブルとまったく同じデータを入力してみましょう。
A1セルから順に、以下のように入力してみてください。
A | B | C | D | E | |
1 | product_id | product_name | category | price | release_date |
2 | 1001 | 魔法のノート | 文房具 | 500 | 2023-04-01 |
3 | 1002 | 走るボールペン | 文房具 | 300 | 2023-09-15 |
4 | 1003 | よく飛ぶスニーカー | ファッション | 8000 | 2023-05-20 |
5 | 1004 | 虹色Tシャツ | ファッション | 3500 | 2024-01-10 |
6 | 1005 | はじめてのSQL | 書籍 | 2800 | 2023-11-01 |
準備はできましたか?
QUERY 関数は、A1からE6の表とは別のセル(例えば A8 セルなど、空いている場所)に入力していきます。
3. QUERY関数の基本ルール
QUERY 関数の書き方は、このようになっています。
=QUERY(データ範囲, "クエリ(命令文)", [見出しの行数])引数1:データ範囲
どこのデータを対象にするか。例えばA列の1行目からE列の6行目までを対象とする場合は A1:E6 です。
引数2:"クエリ(命令文)"
SQLのような命令を書く場所。必ず "" (ダブルクォート) で囲みます。
引数3:[見出しの行数] (省略可)
データの先頭から何行を見出し・ヘッダー(product_id, product_nameなどのカラム名が書かれている箇所)として扱うかを指定します。デフォルトでは1。
殆どの場合、見出し・ヘッダーは1行目に書いてあるでしょうから、この引数は実質ほぼ省略してよいです。
4. スプレッドシートでSQLを体験しよう
それでは、前回の復習をしながら QUERY 関数を書いてみましょう!
4-1. 全データを表示させたいとき (SELECT *)
前回、全データを表示するSQLはこうでした。
SELECT * FROM products;QUERY 関数では、FROM (どのテーブルから) の部分は、すでに関数の A1:E6 で指定しています。
そのため、命令文は SELECT から書き始めます。
空いているセルに、以下のように入力してみてください。
=QUERY(A1:E6, "SELECT *")これを入力すると、A8セル以降に、A1:E6 のデータがまるごとコピーされたように表示されれば成功です!

4-2. 特定の列だけ見たいとき (SELECT カラム名)
ここが QUERY 関数の少し特殊なところです。
QUERY 関数では、product_name や price といった列名(見出し)ではなく、A, B, C... という「列のアルファベット」を使って指定します。
- A列:
product_id - B列:
product_name - C列:
category - D列:
price - E列:
release_date
前回、「商品名 (product_name) と価格 (price) だけ見たい」というSQLを書きました。
SELECT product_name, price FROM products;QUERY 関数では、商品名 (B列) と価格 (D列) を指定するので、こうなります。
=QUERY(A1:E6, "SELECT B, D")
4-3. 欲しいデータだけを選ぶ (WHERE句)
絞り込みも、列のアルファベットを使って命令します。
前回、「カテゴリが『文房具』の商品だけ見たい」というSQLを書きました。
SELECT * FROM products WHERE category = '文房具';QUERY 関数では、カテゴリ (C列) が '文房具' という条件になるので、こうなります。
=QUERY(A1:E6, "SELECT * WHERE C = '文房具'")前回と同じように「魔法のノート」と「走るボールペン」の行だけが表示されたはずです。
(もちろん、WHERE D < 1000 のような数値の比較や、WHERE E >= '2024-01-01' のような日付の比較も、前回同様に使えます!)

4-4. データを並び替える (ORDER BY句)
並び替えも、列のアルファベットを使います。
前回、「発売日が新しい順に並び替えたい」というSQLを書きました。
SELECT * FROM products ORDER BY release_date DESC;QUERY 関数では、発売日 (E列) を基準に DESC (降順=新しい順) と指定します。
=QUERY(A1:E6, "SELECT * ORDER BY E DESC")5. 組み合わせてみよう (WHERE と ORDER BY)
もちろん、組み合わせも可能です!
総まとめとして「『文房具』カテゴリの商品 (C列)を、価格が高い順 (D列 DESC)**に並び替えて、商品名 (B列) と価格 (D列)だけ表示」させてみましょう。
SQLで書くとこうです。
SELECT product_name, price FROM products WHERE category = '文房具' ORDER BY price DESC;QUERY 関数で、列アルファベット (B, C, D) に置き換えると…?
=QUERY(A1:E6, "SELECT B, D WHERE C = '文房具' ORDER BY D DESC")これを入力して、次のように表示されれば、完璧です!
データベースを一切使わずに、SQLの基本的な命令を体験できましたね!

6.同一ファイル内の異なるシートからQuery関数を実行する
さらに、同一ファイル内の「異なるシート」にあるデータを読み込んでQUERY関数を実行する方法を解説します。
これまでデータがあるシート内でQuery関数を実行する例を紹介してきましたが、実際のところ、データがあるシート内を編集して汚してしまうのはよろしくありません。
シートを分けておくことで、元のデータを誤って編集してしまうリスクを防ぎ、分析するシートでは自由に試行錯誤ができるようになります。
6-1. 準備:2つのシートを用意しよう
まずは、スプレッドシートの「シート」を2枚に分けて、1枚目のデータを含むシートは名前を「商品マスタ」に変更します。
A | B | C | D | E | |
1 | product_id | product_name | category | price | release_date |
2 | 1001 | 魔法のノート | 文房具 | 500 | 2023-04-01 |
3 | 1002 | 走るボールペン | 文房具 | 300 | 2023-09-15 |
4 | 1003 | よく飛ぶスニーカー | ファッション | 8000 | 2023-05-20 |
5 | 1004 | 虹色Tシャツ | ファッション | 3500 | 2024-01-10 |
6 | 1005 | はじめてのSQL | 書籍 | 2800 | 2023-11-01 |

次に、左下の「+」ボタンで新しいシートを追加し、名前を「分析シート」に変更します。
こちらは、QUERY関数を入力するための場所なので、空っぽのままでOKです。
これで、「データを保管する場所」と「関数を実行する場所」が分かれました。

2. 別シートのデータを読み込む書き方
では、「分析シート」にいながら、「商品マスタ」シートのデータを操作するには、どうすればいいのでしょうか?QUERY関数の第1引数(データ範囲)の書き方を、少しだけ変える必要があります。
=QUERY('シート名'!範囲, "クエリ")A1:E6 のように範囲だけを書くのではなく、その前に 'シート名'! ('シート名'とビックリマーク)を付けるだけです。分析シートのA1セルに、QUERY関数を書いていきましょう。
例)
=QUERY('商品マスタ'!A1:E6, "SELECT *")
いかがでしょう。これであれば、データが含まれる元のシート「商品マスタ」を汚染することなく、Queryが実行できます!
実際、スプレッドシートを用いる業務でこうした方法はよくある運用パターンなので、ぜひ取り入れてみてください。
おわりに
今回は、Googleスプレッドシートの QUERY 関数を使って、SQLの体験学習をしてみました。QUERY 関数の良いところは、命令文(クエリ)を書き換えるたびに、即座に結果が変わることです。 「あ、ASC にしたらどうなるかな?」「WHERE の条件を変えたら?」と、試行錯誤しながら「データベースと会話する感覚」を養うことができます。
前回学んだSQLの知識が、QUERY 関数という身近なツールで実際に動かせることが伝われば幸いです。
ぜひ、ご自身でも products テーブルのデータを増やしたり、条件を変えたりして遊んでみてください! 最後までお読みいただき、ありがとうございました。
もし、
「プログラミングを体系的に学びたい」
「エンジニア転職を頑張りたい」
「独学に限界を感じてきた...」
「コミュニティで仲間と共に学びたい」
などと感じられたら、ぜひ検討してみてください。
まずは様子見...という方は、公式LINEにぜひご登録下さい。
学習や転職ノウハウに関する豪華特典11個を無料配布しています!
LINE紹介ページで特典を確認する


