GoogleスプレッドシートのQUERY関数の使い方や、基本的な構成についてご紹介します。今回は特にQUERY関数のSELECT句について詳しい解説や、演算子・集計関数・スカラー関数と組み合わせて使う方法について解説しているので、ぜひ参考にしてみてください。
スプレッドシートのQUERY関数の使い方
QUERY関数ではGoogle Visualization API のクエリ言語を使用することで、様々な方法でデータ抽出が可能です。QUERY関数の要素と、クエリの種類について簡単にご紹介します。
QUERY関数とは?
QUERY関数は対象の「データ」範囲に、指定した「データ操作(クエリ)」を行います。
クエリはデータに対して実行する「処理・命令」のようなイメージです。
クエリにはそれぞれ異なる機能を持つ10種類の句が用意されており、各クエリや関数を組み合わせることで様々な方法でデータ抽出することができます。
QUERY関数の構成要素:(データ, クエリ, [見出し])
3つ目の要素の「見出し」には、列見出しの行数を入力します。
例えば「2」を指定すると見出しが2行と認識されるため、2行目まではデータに含まれません。
「見出し」は省略可能で、省略または「-1」を指定するとデータ内容に基づいて推測されます。
要素3:「見出し」は基本的に省略でOKです。
QUERY関数のクエリの種類
クエリの種類には以下のようなものがありますが、今回はSELECT句について詳しく解説します。SELECT句は最も基礎的なクエリで、ほかにWHERE句やGROUP BY句などもよく使用されます。
- select :特定の列を指定した順序で抽出します。(ピックアップ)
- where :条件を満たすセルだけを抽出します。
- group by: 列内の同じ要素の値を集計します。
- pivot :group byで抽出したデータに分類要素を追加します。
- order by 行を列の値で並べ替えます。
- limit :抽出する行数を指定します。
- offset:指定した数の最初の行をスキップします。
- label:列ラベルを設定します。
- format:特定の列の値を書式設定します。
- options :追加オプションを設定します(no_formatまたはno_values)
QUERY関数のSELECT句の基本的な使い方
QUERY関数に、SELECT句を指定する方法について解説します。まずはSELECT句の基本的な機能を理解するために、データから特定の列だけを抽出してみましょう。
特定の列だけを抽出する
QUERY関数のSELECT句は、対象の「データ」から特定の列を指定した順序で抽出します。
例えば「=QUERY(A:D,”SELECT C”)」のように、SELECT句に列(C)を設定してみましょう。※クエリはダブルクォーテーション内に記入してください。
列の抽出:=QUERY(データ範囲,”SELECT 列
” ,[見出し])
対象のデータ範囲の中から、C列だけが抽出されました。
列を入れ替えて抽出する
SELECT句が列を指定した順序で抽出する点を利用すると、列の入れ替えが可能です。
「=QUERY(A:D,”SELECT C,B,A,D”)」のように、順序だけ入れ替えてデータを抽出してみましょう。
複数列の抽出:=QUERY(データ範囲, “SELECT 列1
,列2
,列3
,列4
“, [見出し])
対象のデータ範囲が、すべて抽出されました。
F列とH列に注目すると、元データと順序が入れ替わっているのが分かります。
すべての列を抽出する
SELECT句にアスタリスク「*」を指定すると、データ範囲のすべての列が元の順序で抽出されます。
またSELECT句自体が指定されていない場合も、同様にすべての列が抽出されます。
すべての列を抽出:=QUERY(データ範囲, “SELECT *”, [見出し])
SELECT句と算術演算子を組み合わせる方法
SELECT句に演算子を組み合わせれば、特定の列の演算処理後のデータが抽出可能です。
例えば「=QUERY(A:D,”SELECT D*1.08″)」のように、D列に税率(1.08)を掛けた値をSELECT句で抽出してみましょう。
算術演算子:合計(+)、差( – )、積( * )、商( / )
対象のデータ範囲から列(D)を抽出されました。
元データと比較してみると、SELECT句で抽出したF列には1.08が乗算されているのが分かります。
演算子の指定:=QUERY(データ範囲,”SELECT 列+
or-
or*
or/
値”,[見出し])
SELECT句では、一度に複数の演算結果を抽出することも可能です。
例えば「=QUERY(A:D,”SELECT D*1.08,D-50″)」のようにD列に乗算と減算の2つの演算処理を行った結果を、SELECT句で抽出してみましょう。
複数の演算子を指定:=QUERY(データ範囲,”SELECT 列*
値,列-
値”[見出し])
対象のデータ範囲から列(D)が、F列とG列に抽出されました。
元データと比較してみるとF列には1.08が乗算、G列には50が減算されているのが分かります。
SELECT句と集計関数を組み合わせる方法
SELECT句に集計関数を組み合わせれば、特定の列の集計処理後のデータが抽出可能です。
例えば「=QUERY(A:D,”SELECT sum(D)”)」のようにSUM関数でD列を合計した結果を、SELECT句で抽出してみましょう。
SUM(列):指定した列のデータから、すべての値の合計を返す関数です。
対象のデータ範囲から、列(D)の合計値が抽出されました。
集計関数の指定:=QUERY(データ範囲,”SELECT sum(列
)”)
SELECT句に使える集計関数には合計値を返すSUMを含め、合計5つの関数があります。カンマで区切りながら、1度に複数の集計関数を使用することも可能です。
- avg( ):平均値を返します。
- count( ):要素数を返します。
- max( ):最大値を返します。
- min( ):最小値を返します。
- sum( ):値の合計を返します。
対象のデータ範囲から、それぞれの集計関数の処理結果が抽出されました。
5列分の集計結果が抽出されていますが、関数を入力しているのはF1セルだけです。
複数の集計関数を指定:
=QUERY(データ範囲,”SELECT sum(列
),count(列
),max(列
),min(列
),avg(列
)”)
SELECT句とスカラー関数を組み合わせる方法
SELECT句にスカラー関数を組み合わせれば、特定のデータを基にした別の値を生成できます。
例えば「=QUERY(A:D,”SELECT month(A)+1″)」のように、A列のデータを基に「月の値」を生成した結果を、SELECT句で抽出してみましょう。
month(列):日付または日時の値から、ゼロから始まる月の値を返す関数です。月をゼロから数え始めるため、月の値に1をプラスしています。
対象のデータ範囲(日付)から、「月の値」を生成した結果が抽出されました。
月を抽出:=QUERY(データ範囲,”SELECT month(列
)+1″)
SELECT句には、一度に複数のスカラー関数をセットすることも可能です。
「=QUERY(A:D,”SELECT year(A),month(A)+1,day(A)”)」のように、A列のデータから「年の値・月の値・日付」の3つを生成し、結果をSELECT句で抽出してみましょう。
年月日を抽出:=QUERY(データ範囲,”SELECT year(列
),month(列
+1,day(列
)”)
対象のデータ範囲(日付)から、「年の値・月の値・日付」を生成した結果が抽出されました。スカラー関数には年月日を生成するもの以外にも、以下のような種類があります。
- year( ):日付または日時の値から、年の値を返します。
- month( ):日付または日時の値から、ゼロから始まる月の値を返します。
- day( ):日付または日時の値から、日付を返します。
- hour( ):日時または時刻の値から、時間の値を返します。
- minute( ):日時または時刻の値から、分の値を返します。
- second( ):日時または時刻の値から、秒の値を返します。
- millisecond( ):日時または時刻の値から、ミリ秒部分を返します。
- quarter( ):日付または日時の値から、四半期を1~4の数字で返します。
- dayOfWeek( ):日付または日時の値から、曜日を1~7の数字で返します。
- now( ):GMTタイムゾーン(日本はGMT+9)で、現在の日時を表す日時値を返します。
- dateDiff( ):2つの日付値または日時値の差を、日数で返します。
- toDate( ):指定された値を日付値に変換します。
- upper( ):指定された文字列を大文字で返します。
- lower( ):指定された文字列を小文字で返します。
QUERY関数No2
- WHERE句の使い方
- 複数条件の設定
- 文字列の比較演算子