読んで欲しい人
- SQLに興味があるが、一から環境やデータ整備するのがめんどくさい人
- vlookupとかでデータ抽出しているが、限界を感じている人
- データ分析したい人
- ノンプログラマーでもクエリぐらいは使いたいって人
- クエリって美味しいの?って人(クエリは美味しいですよって意味も込めて)
Query関数(クエリ関数)シリーズ予定 (あくまで予定)
- 概要と目的
- クエリ関数の構成
- 基本の基本 SELECT句(全部取得、特定カラムだけ取得)
- 抽出の基本 WHERE句を使ってみる(数値一致、大小、日付一致、大小etc)
- GROUP BY句を使ってみる
- 他のシートからデータを持ってきてみよう〜 ImportRange関数との組み合わせ〜
- 並び替えの基本 ORDER BY句
- SQLやるなら必須 サブクエリをやってみる←今回
- データに改行が入ってるぞ likeで対応できない時はcontains/starts withが助けてくれる
Query:サブクエリとは
サブクエリは「副問い合わせ」とも呼ばれ、SQL文の中にSELECT文を埋め込み、抽出条件として利用することを可能にする方法です。純粋SQLではjoinが効くので非常に有効です。
Query関数においても、サブクエリ的な挙動を実施することは可能です。完全にサブクエリを作れるかと言われると、現状の私の知識では??となる部分もありますが、わかる範囲でサブクエリ的動作をクエリ関数に折り込んでいきましょう。
サブクエリ的なクエリの構築
シンプルにいうと、クエリの条件句のなかを“&{関数}&”という形で作成するものです。何はともあれ実際のクエリをみていきましょう。
=query(A1:H7,"select * where F >"& average(F2:F6)*1.1 &"")
上記の例では、”&_{関数}_&”の関数部分にaverage()を利用して、✖️1.1をしています。範囲内の平均値に1.1倍したものより大きいデータだけ抽出するという形です。
このaverage部分は純粋にスプレッドシート関数なので、クエリ句的に問題のない(型一致する)データ形式であればなんでも使えます。
これってシリーズの中で似たものをみた覚えがありませんか?4回目のWHERE句の回でTEXTを使ってセル参照したことがありました。該当回の記事はリンクを参照ください。
このTEXTを利用したセルのデータの時も実は“&{関数}&”でデータ抽出条件を関数化していました。それの応用でサブクエリ的な処理が実施できるということなのです。
まとめ
Query関数においてサブクエリを多用すると、どんどんクエリ関数が長くなりみづらくなる欠点があります。SQLのクエリだと改行してもOKなので楽なんですけどね。
スプレッドシートは基本データの形をわかりやすく作ることが求められます。サブクエリで色々検索できる条件を付加することも慣れると楽ですが、それよりもそもそものデータ形式を見直してみると関数自体は非常にシンプルでもやりたいことが実現できるようになるかもしれません。
それでは、次回がシリーズの最終回、困ったデータが引き起こすトラブルとその解決策を紹介していきます。
【レクチャー関係紹介】
ストアカ
ストアカにおいて、私も1.5H程度で簡単にGASやQuery関数のとっかかりを解説する講座を実施しています。1Hくらいの講座と、30分くらいの相談時間(自由時間)を設けて、これからGASやQueryを始める人向けに実際のドキュメントや簡単なスプレッドシートでのGAS・Queryの使い方などを解説させていただきます。
個人的には普及活動の一環だと思って、他の業務のお客さんには申し訳ないものの、それなりにお求めやすく設定しています。必要に応じて別途継続サポートさせていただくことも可能です。
私の講座以外にもストアカには同じような金額帯でQuery講座が複数準備されていました。受講したことがないので、評価は出来ない立場にありますが、相性の良さそうな先生を探すのも手かもしれません。
MENTA
メンターを探すサイトも存在します。あまりGASやQuery関数を教えますってメンターはそこまで多くはないのが実情です。ノンプロエンジニア向けではなく、エンジニア向けor エンジニア志望者向けなので、Query関数はあまり対象にならないかもしれません。他方で純粋SQLを教えてほしいというリクエストであれば、多くのメンターが集まると思います。
ちなみに、私のレクチャーページも紹介しておきます。
【Query関数】 相談PLAN連載目次: spreadsheet_query関数を使いこなそう
SQL勉強もかねて、spreadsheetのquery関数の使い方に慣れていきます。簡単なselect文の使い方から、SQLとの違いも含めて勉強していきます。
- スプレッドシートQuery関数を使ってみよう ①概要と目的
- スプレッドシートQuery関数を使ってみよう ②クエリ関数の構成
- スプレッドシートQuery関数を使ってみよう ③SELECT句
- スプレッドシートQuery関数を使ってみよう ④WHERET句
- スプレッドシートQuery関数を使ってみよう ⑤GROUP BYを使ってみる
- スプレッドシートQuery関数を使ってみよう ⑥他のシートからデータを持ってきてみよう〜 ImportRange関数との組み合わせ〜
- スプレッドシートQuery関数を使ってみよう ⑦並び替えの基本 ORDER BY句
- スプレッドシートQuery関数を使ってみよう ⑧SQLやるなら必須 Query関数でもサブクエリをやってみる
- スプレッドシートQuery関数を使ってみよう ⑨データに改行が入ってるぞ etc クエリ関数エラー対策
- スプレッドシートQuery関数番外編 〜Query関数のエラー原因ランキング〜