GoogleスプレッドシートのQuery関数をご存知ですか?
Vlookup関数といった、他のシートのデータを参照する関数がありますが、それよりも更に便利に高速にデータを引用することができる強力な関数です。
QUERY関数は、Googleスプレッドシートで使用されるデータベース関数で、データベースから指定された条件に合ったデータを取得することができます。
QUERY(data, query, [headers])
・data: クエリを実行するデータベース
・query: クエリ。SQLのような記述方法で指定する
・headers: データのヘッダー行があるかどうか。省略すると、ヘッダー行があると認識される
例:
A1:A5に”名前”
B1:B5に”年齢”
C1:C5に”性別”
D1:D5に”データ”が入っている場合
=QUERY(A1:D5, “SELECT A, B WHERE C = ‘男’”)
結果は “名前” “年齢” “データ” のセルが性別が”男”の行だけになる。
QUERY関数を使用することで、データベースから指定された条件に合ったデータを取得することができます。
「検索条件」は、基本的な構文として「SELECT」、「WHERE」、「GROUP BY」、「HAVING」、「ORDER BY」、「LIMIT」といったキーワードを使用します。これらのキーワードを組み合わせることで、複雑な検索条件を記述することができます。
例えば、A列に名前、B列に性別、C列に年齢が入力されている場合、男性の名前と年齢を抽出するには次のように記述します。
SELECT構文とWHERE構文
=Query(A:C, "SELECT A, C WHERE B = '男性'")
この例では、「SELECT」でA列とC列を選択し、「WHERE」でB列が「男性」であるデータだけを抽出することで、男性の名前と年齢だけが表示されます。
「Query」関数を使うと、データを素早く抽出したり集計したりすることができるため、Googleスプレッドシートでデータ処理を行う際に非常に便利な関数です。
GROUP BY構文
Googleスプレッドシートの「Query」関数の「GROUP BY」は、データを特定の値でグループ化し、集計を行うための機能です。「GROUP BY」を使うと、データを値の分類に応じてまとめることができるため、データの集計や集約が容易に行えます。
「GROUP BY」の構文は次のようになります。
=Query(データ範囲, "SELECT 集計対象列名 GROUP BY 分類対象列名")
例えば、A列に名前、B列に性別、C列に年齢が入力されている場合、男女別の年齢の平均値を求めるには次のように記述します。
=Query(A:C, "SELECT B, AVG(C) GROUP BY B")
この例では、「SELECT」でB列とC列を選択し、「GROUP BY」でB列でデータを分類し、「AVG」関数を使ってC列の平均値を求めることで、男女別の年齢の平均値を算出しています。
「GROUP BY」には、「HAVING」句を組み合わせることで、特定の条件を満たすデータだけを集計対象とすることができます。例えば、前の例で、「20歳以上の男性の年齢の平均値」を求める場合は次のように記述します。
=Query(A:C, "SELECT B, AVG(C) GROUP BY B HAVING C >= 20")
この例では、「HAVING」でC列が20以上であるデータだけを集計対象としています。
「GROUP BY」を使用することで、データを値の分類に応じてまとめることができるため、データの集計や集約が簡単に行えます。
HAVING
「HAVING」は、「GROUP BY」句と組み合わせて使用することで、特定の条件を満たすデータだけを集計対象とすることができる機能です。「HAVING」を使うと、集計の結果から特定の条件に合致するデータだけを抽出することができます。
「HAVING」の構文は次のようになります。
=Query(データ範囲, "SELECT 集計対象列名 GROUP BY 分類対象列名 HAVING 条件")
例えば、A列に名前、B列に性別、C列に年齢が入力されている場合、20歳以上の男性の年齢の平均値を求めるには次のように記述します。
=Query(A:C, "SELECT B, AVG(C) GROUP BY B HAVING C >= 20")
この例では、「SELECT」でB列とC列を選択し、「GROUP BY」でB列でデータを分類し、「HAVING」でC列が20以上であるデータだけを集計対象とし、「AVG」関数を使ってC列の平均値を求めることで、20歳以上の男性の年齢の平均値を算出しています。
「HAVING」は、「GROUP BY」と組み合わせて使用することで、集計の結果から特定の条件に合致するデータだけを抽出することができるため、より詳細な集計や分析が可能になります。
「HAVING」は、「GROUP BY」句の後に続けて記述します。「HAVING」句の中には、集計後のデータをフィルタリングする条件を指定します。条件は、「WHERE」句と同様に、列名と比較演算子を使用して記述します。
例えば、A列に名前、B列に性別、C列に年齢、D列に身長が入力されている場合、男性で身長が180cm以上の人の名前と身長の平均値を求めるには次のように記述します。
=Query(A:D, "SELECT A, AVG(D) GROUP BY A HAVING B = '男性' AND D >= 180")
この例では、「SELECT」でA列とD列を選択し、「GROUP BY」でA列でデータを分類し、「HAVING」でB列が「男性」かつD列が180以上のデータだけを集計対象とし、「AVG」関数を使ってD列の平均値を求めることで、男性で身長が180cm以上の人の名前と身長の平均値を算出しています。
「HAVING」は、「GROUP BY」と組み合わせることで、より詳細な集計や分析が可能になります。また、「HAVING」句には「WHERE」句と同様に、論理演算子やカッコを使用して条件を複雑にすることができます。
LIMIT構文
「LIMIT」は、検索結果を特定の件数だけに制限するための機能です。「LIMIT」を使うと、検索結果を最初のいくつかのデータだけに制限することができます。
「LIMIT」の構文は次のようになります。
=Query(データ範囲, "SELECT 取得列名 LIMIT 取得件数")
例えば、A列に名前、B列に性別、C列に年齢が入力されている場合、最初の5件の名前と性別を抽出するには次のように記述します。
=Query(A:C, "SELECT A, B LIMIT 5")
この例では、「SELECT」でA列とB列を選択し、「LIMIT」で検索結果を最初の5件だけに制限しています。「LIMIT」を使用することで、検索結果を特定の件数だけに制限することができます。
「LIMIT」は、「Query」関数の最後に続けて記述します。「LIMIT」の後には、取得するデータの件数を数値で指定します。この数値は、0以上の整数を指定します。
「LIMIT」を使用すると、検索結果が制限されるため、すべてのデータを取得することができないという欠点があります。また、「LIMIT」を使用すると、検索結果が制限されるため、データの全体像が把握しにくくなるという欠点もあります。そのため、「LIMIT」は、特定のデータだけを取得する必要がある場合にのみ使用することが推奨されます。
また、「LIMIT」は「Query」関数の他のクエリー句と組み合わせることができます。例えば、「ORDER BY」や「WHERE」と組み合わせることで、特定の条件を満たすデータから特定の件数だけを抽出することができます。