QUERY 関数

閲覧時間数:6 分
  1. 関数の説明
QUERY 関数は SQL のような構文を使用します。Lark シートにて、QUERY 関数を使用して、データを柔軟に検索およびフィルタリングできるほか、値の集計を行うことも可能です。
  1. 関数の書式
  • 書式:=QUERY(範囲, [クエリ], [見出しの行数])
  • 引数:
  • 範囲:クエリを実行するデータソースの範囲を指定します。 各列のデータタイプは 1 種類のみで、ブール値、数値(日付/時間タイプを含む)または文字列である必要があります。
  • クエリ(任意):SQL の構文に類似するクエリ式を指定します。クエリは半角の二重引用符で囲む必要があります。例:"select A, sum(D) where A ='IT' group by A"。クエリを省略する場合、関数は範囲内すべての値を返します。また、複数の SQL センテンスを連結して記述することができます。センテンス間にスペースを入れる必要があります。クエリ句で始まるセンテンスでは、集計関数、日付関数、演算子を使用できます。関数の前にはコンマを使用する必要があります。
  • :使用できるクエリ句は「select」、「where」、「group by」、「pivot」、「order by」、「limit」、「offset」、「label」のみです。また、クエリ句を組み合わせて使用する場合は上記順序を守る必要があります。例えば、「select」は必ず「group by」の前に出現する必要があります。
  • 見出しの行数(任意):データソースの見出しの行数を指定します。省略する場合は、データソースに基づいて自動的に判断されます。1 と入力する場合、データソースの 1 行目がクエリ結果の見出しになります。2 と入力する場合、データソースの 1 行目と 2 行目がクエリ結果の見出しになります。
  • 例:=QUERY(B2:C10, "select B, sum(C) where B='Item A' group by B") を使用して、各種類の商品の総販売量を集計します。こちら(英語)をクリックしてテンプレートを使用できます。
  • 250px|700px|reset
  1. クエリの説明
クエリには、クエリ句、集計関数、日付関数および演算子を使用できます。
クエリ句
クエリ句
説明
select
  • 結果として返す列を指定します。列の間を半角のカンマで区切ります。列の指定には列番号(A, B, C など)のみ使用でき、見出し(売上高、名前など)は使用できません。
  • select には列番号を直接に指定できるほか、集計関数、日付関数、二項演算の結果を指定することも可能です。
  • このクエリ句を省略する場合、デフォルトで範囲内のすべての列が返されます。
  • select D:D 列を選択します
  • select max(D):D 列の最大数値を選択します
  • select year(D):D 列の年情報を選択します
  • select D+E:D 列と E 列の情報を選択します
where
  • 返す結果が満たす必要がある条件を指定します。値のフィルタリングにあたります。
  • 一般的な演算子 =、<、<=、>、>=、!=、<> に加え、空の値の判定 is null および is not null も使用できます。
  • 論理演算子 and または OR を使用して、複数の条件を追加できます。かっこ () を使用して、条件の優先順位を指定できます。
  • 集計関数は、条件として指定できません。
  • 条件に含まれる値が文字列である場合、半角の一重引用符で囲む必要があります。
  • where D = 35:D 列の数値が 35 の情報をフィルタリングします。
  • where D != 'IT' and C > 100:D 列の値が IT でなく、C 列の数値が 100 より大なりの情報をフィルタリングします。
  • where (D='IT' and C > 200) OR (D='IT' and C < 10):D 列の値が IT で、C 列の数値が 200 より大なりの情報をフィルタリングします。または、D 列の値が IT で、C 列の数値が 10 より小なりの情報をフィルタリングします。
  • C="&A1&"の場合:C 列の値が A1(この場合、A1 の値は数値型)と等しい情報をフィルタリングします。
  • C='"&B1&"'の場合:C 列の値が B1(この場合、B1 の値はテキスト型)と等しい情報をフィルタリングします。
group by
  • 同じ種類の項目をまとめるために、グループ化条件を指定します。
  • select 句で集計関数が使用されている場合、同時に使用する必要があります。
  • 通常グループ化条件として、元のフィールドと日付関数フィールドが含まれます。
  • select D, max(A) group by D:D 列のすべての情報と A 列の最大点を選択し、D 列で並べ替えます。
  • select D, year(C), max (A) group by D, year (C):D 列のすべての情報、C 列の年情報、A 列の最大点を選択し、D 列の値と C 列の年で並べ替えます。
order by
  • 並べ替え条件を指定します。並べ替え条件となるフィールドとして、select 句で指定されている列のみ使用できます。
  • デフォルトでは昇順で並べ替えます。降順で並べ替えるには、desc を入力します。
  • 集計関数と同時に使用できます。
  • order by A:A 列の情報による並べ替え。
  • order by sum(A) desc:A 列の合計による降順の並べ替え。
pivot
  • 列に含まれる一意の値を新しい列として変換します。
  • pivot 句を使用するには、select 句に集計関数が使用されていることが前提です。
  • pivot 句で使用する列は、同時に select、order by または group by 句で使用できません。
  • pivot 句では、集計関数を使用できません。
  • select A,sum(C) group by A pivot B:A 列の情報、C 列の合計情報を選択し、A 列で集約し、B 列のすべての唯一値を新しい列に変換します。
like
  • 次の 2 つのワイルドカードをサポートし、テキストのあいまいな検索に使用します:
  • %:0 個またはそれ以上の任意のタイプの文字に一致します。
  • _:任意のタイプの 1 文字に一致します。
  • where 内でのみ使用でき、論理比較演算子(and、or など)と同等の優先順位を持ちます。
  • where B like '%南':最後の文字が「南」であるテキストをフィルタリングします
  • where B like '_南':2 文字のみを含むテキストをフィルタリングし、その 2 文字目が「南」であるものをフィルタリングします
limit
  • 結果の行数を制限し、最初の n 行のみを返します。
  • n がソース表の総行数以上、または n が 0 未満の場合、すべてのデータ行の内容を返します。
  • select B limit 5:B 列の最初の 5 行のみを返します
offset
  • 結果を返す際に、最初の n 行をスキップします。
  • データ行のみをスキップし、見出しの行は影響を受けません。
  • n がソース表の総行数以上、または n が 0 未満の場合、データ行の内容は返されません。
  • select B offset 3:結果は最初の 3 行をスキップします
label
  • シートの 1 列または複数列に見出しを設定します。
  • 条件値は列の見出しでも、集計関数、日付関数、演算子の結果でも構いません。
  • 見出しを変更する列はselect関数で参照されなければなりません。
  • label 文では、列番号の代わりに見出しを使用することはできません。
  • すでに pivot 関数を使用している場合、pivot が生成した列の既存の見出しは新しい見出しの一部になります。
  • select A, B label A '県', B '市':A 列を県と名付け、B 列を市と名付けます
集計関数
関数
説明
avg()
平均値を計算します。数値のみをサポートします。
  • avg(D):D 列の平均値を計算します。
count()
空の値でない値の個数をカウントします。数値、文字列、日付をサポートします。
  • count(D):D 列の空の値でない値の数を計算します。
max()
最大値を返します。数値、日付をサポートします。
  • max(D):D 列の最大値を返します。
min()
最小値を返します。数値、日付をサポートします。
  • min(D):D 列の最小値を返します。
sum()
合計を計算します。数値のみをサポートします。
  • sum(D):D 列の合計を返します。
日付関数
:括弧内の引用された列は時間形式である必要があります、詳しくはこちらを参照してください。
関数
説明
year()
日付時間値に含まれる年を返します。
  • year(D):D 列に含まれる年を返します。
month()
日付時間値に含まれる月を返します。
  • month(D):D 列に含まれる月を返します。
day()
日付時間値に含まれる日を返します。
  • day(D):D 列に含まれる日を返します。
演算子
演算子/値
説明
+
加算。数値の加算のみをサポートします。
  • select A+B:A 列と B 列の各行の合計を選択
-
減算。数値の減算のみをサポートします。
  • select A-B:A 列と B 列の各行の差を選択
*
乗算。数値の乗算のみをサポートします。
  • select A*B:A 列と B 列の各行の積を選択
/
除算。数値の除算のみをサポートします。分母に 0 を指定する場合、null 値が返されます。
  • select A/B:A 列と B 列の値の商を選択
and
かつ
  • where A!='7' and A!='8':A 列で 7 と 8 以外の値をフィルタリング
or
また
  • where A='7' or A='8':A 列で 7 または 8 の値をフィルタリング
<> 或いは !=
等しくない
  • where B!='7':B 列で 7 以外の値をフィルタリング
=
イコール
  • where B='7':B 列で 7 の値をフィルタリング
<
小なり
  • where B<'7':B 列で 7 未満の値をフィルタリング
<=
小なりイコール
  • where B<='7':B 列で 7 以下の値をフィルタリング
>
大なり
  • where B>'7':B 列で 7 より大きい値をフィルタリング
>=
大なりイコール
  • where B>='7':B 列で 7 以上の値をフィルタリング
is null
空白
  • where B is null':B 列の空白をフィルタリング
is not null
空白ではない
  • where B is not null':B 列の非空白をフィルタリング
  1. 操作手順
4.1 QUERY 関数を使用する
  1. Lark シートを開きます。
  1. セルを選択し、セル内に「=QUERY(範囲, [クエリ], [見出しの行数])」を入力します。
  1. Enter キーを押すと、セルにクエリ結果が表示されます。
例えば、数式 =QUERY(A:D, "select B,year(A),sum(D) where B='東南' and C='天ぷら' group by B, year(A) order by sum(D) DESC") を使用して、下図の東南地域の 3 年間の天ぷらの総売上を統計できます。同時に、地域と年度でデータを集約し、総売上で降順に並べ替えます。
  • select:select 関数を使用して、クエリ結果に表示したい列を選択します。この例では使用します:
  • B:B 列、つまり地域情報列
  • year(A):A 列の年情報、つまり報告時間列の年情報
  • sum(D):D 列の関連データの合計、つまり選択した地域の選択した年の総売上
  • where:where 関数を使用してクエリの条件を設定し、クエリ条件に一致するレコードをフィルタリングします。この例では使用します:
  • B='東南':B 列の値が「東南」である必要があります。「東南」を半角の二重引用符で囲む必要があります。
  • and C ='天ぷら':同時に、C 列の値が「天ぷら」である必要があります。「天ぷら」を半角の二重引用符で囲む必要があります。
  • group by:集約と並べ替えの方法を設定します。この例では:
  • B:地域でデータを集約します
  • year(A):年でデータを集約します
  • order by:並べ替え方法を設定します。この例では使用します:
  • sum(D):総売上で並べ替えます
  • desc:降順に並べ替えます
250px|700px|reset
4.2 QUERY 関数を削除する
QUERY 関数が適用されたセルを選択してから、削除キーを押します。
  1. よくある質問
Q:クエリ句では必ず大文字を入力しますか?
A:列をクエリのデータソースに指定する場合、その列の番号を大文字で入力しなければなりません。例えば、「select B」を「select b」と書くとクエリを実行できません。
作成者: Lark ヘルプセンター
最終更新:2025-01-22
このコンテンツはいかがでしたか?
送信しました。貴重なご意見をいただきありがとうございます。
サポートが必要な場合は、カスタマーサービスまでご連絡ください
rangeDom
rangeDom