スプレッドシートQuery関数を使ってみよう ⑧SQLやるなら必須 Query関数でもサブクエリをやってみる

クエリイメージ スプレッドシート
この記事は約3分で読めます。
Advertisements

読んで欲しい人

  • SQLに興味があるが、一から環境やデータ整備するのがめんどくさい人
  • vlookupとかでデータ抽出しているが、限界を感じている人
  • データ分析したい人
  • ノンプログラマーでもクエリぐらいは使いたいって人
  • クエリって美味しいの?って人(クエリは美味しいですよって意味も込めて)

Query関数(クエリ関数)シリーズ予定 (あくまで予定)

  1. 概要と目的
  2. クエリ関数の構成
  3. 基本の基本 SELECT句(全部取得、特定カラムだけ取得)
  4. 抽出の基本 WHERE句を使ってみる(数値一致、大小、日付一致、大小etc)
  5. GROUP BY句を使ってみる
  6. 他のシートからデータを持ってきてみよう〜 ImportRange関数との組み合わせ〜
  7. 並び替えの基本 ORDER BY句
  8. SQLやるなら必須 サブクエリをやってみる←今回
  9. データに改行が入ってるぞ 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なので楽なんですけどね。

スプレッドシートは基本データの形をわかりやすく作ることが求められます。サブクエリで色々検索できる条件を付加することも慣れると楽ですが、それよりもそもそものデータ形式を見直してみると関数自体は非常にシンプルでもやりたいことが実現できるようになるかもしれません。

それでは、次回がシリーズの最終回、困ったデータが引き起こすトラブルとその解決策を紹介していきます。

連載目次: spreadsheet_query関数を使いこなそう

SQL勉強もかねて、spreadsheetのquery関数の使い方に慣れていきます。簡単なselect文の使い方から、SQLとの違いも含めて勉強していきます。

  1. スプレッドシートQuery関数を使ってみよう ①概要と目的
  2. スプレッドシートQuery関数を使ってみよう ②クエリ関数の構成
  3. スプレッドシートQuery関数を使ってみよう ③SELECT句
  4. スプレッドシートQuery関数を使ってみよう ④WHERET句
  5. スプレッドシートQuery関数を使ってみよう ⑤GROUP BYを使ってみる
  6. スプレッドシートQuery関数を使ってみよう ⑥他のシートからデータを持ってきてみよう〜 ImportRange関数との組み合わせ〜
  7. スプレッドシートQuery関数を使ってみよう ⑦並び替えの基本 ORDER BY句
  8. スプレッドシートQuery関数を使ってみよう ⑧SQLやるなら必須 Query関数でもサブクエリをやってみる
  9. スプレッドシートQuery関数を使ってみよう ⑨データに改行が入ってるぞ etc クエリ関数エラー対策

コメント