智能助手
帮助中心智能助手上线
我能为你解答 Lark 使用的问题,快来问问我吧!
00:00
点击按住可拖动视频
我知道了
去试试

QUERY 函数

本文阅读时长:14 分钟
一、函数介绍
Query 函数是一种数据查询函数,它允许用户通过类似 SQL(Structured Query Language)的语法对数据进行筛选、排序、聚合等操作,能从大量数据中提取满足特定条件的数据。
二、函数解读
  • 函数公式:=QUERY(范围, [查询语句], [标题行数])
  • 参数释义:
  • 范围:用于查询的数据范围。每列数据中的数据类型只能是一种,且必须是布尔值、数字(包括日期/时间类型)或字符串。
  • 查询语句:选填,省略时会返回查询范围内所有值。查询语句类似 SQL,需要使用英文双引号括起来。你可以组合使用不同关键字引导的子句,子句之间需要用空格分隔。在关键字引导的子句中,你可以使用聚合函数、日期函数和运算符,函数前需使用逗号。
:目前只支持关键字 select、where、group by、pivot、order by、limit、offset、label。组合使用时必须遵循该顺序,即 select 必须位于开头,以此类推。
  • 标题行数:选填;查询结果的表头在源数据中所对应的行数。如果省略此项,函数将会自动判断。填写 1 时,源数据中的第一行会作为查询结果的表头。填写 2 时,源数据中的第一行和第二行内容将一同被包含在查询结果的表头中,以此类推。
  • 举例:本例需要汇总每类商品的总销售量。你可以使用该模板 Query 函数教学进行实操测试。
查询公式
查询范围
查询结果
=QUERY(B2:C10, "select B, sum(C) where B='商品 A' group by B")
250px|700px|reset
250px|700px|reset
三、查询语句说明
关键字使用说明
关键字
说明
示例
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 的信息
  • where C="&A1&":筛选出 C 列中值等于 A1 的信息(此处 A1 的值为数字类型)
  • where C='"&B1&"':筛选出 C 列中值等于 B1 的信息(此处 B1 的值为文本类型)
like
  • 只能在 where 中使用,优先级与逻辑比较符(如 and、or)相等。
  • 支持以下两个通配符,用于模糊搜索文本:
  • %:匹配 0 个或多个任意类型的字符。
  • _:匹配 1 个任意类型的字符。
  • where B like '%南':筛选出最后一个字符为南的文本
  • where B like '_南':筛选出仅包含两个字符的文本且第二个字符为南
group by
  • 设置分组聚合维度,用于合并同类项。
  • select 函数中包含聚合函数时需搭配使用 group by。
  • 分组依据一般包括原字段和日期函数字段。
  • 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 列中的年份排序
pivot
  • 将列中的唯一值转换成新的列。
  • 使用 pivot 时,select 函数中需包含聚合函数。
  • pivot 中的列不能出现在 select、order by 或 group by 函数中。
  • 不支持使用聚合函数作为条件。
  • select A,sum(C) group by A pivot B:选择 A 列信息,C 列总和信息,按照 A 列聚合,并将 B 列中的唯一值转为新的列
order by
  • 设置排序依据,用于排序的列必须为 select 函数所引用。
  • 默认为升序排列,如在函数后添加 desc,则为降序。
  • 可使用聚合函数作为条件。
  • order by A:按照 A 列信息排序
  • order by sum(A) desc:按照 A 列总和降序排列
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 列中的非空值
四、操作步骤
使用 Query 函数
  1. 进入表格,在单元格内输入=QUERY(范围, [查询语句], [标题行数])。
  1. 回车 键,单元格中将显示查询结果。
例如,通过公式 =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
删除 Query 函数
选中应用了 Query 函数的单元格,按删除键,清空单元格内的函数公式。
五、常见问题
问:查询语句是否区分大小写?
答:语句本身不区别大小写,select 可以写成 SELECT, sum 可以写成 SUM。但选择的列号必须大写,比如 select D 写成 select d,系统无法识别。
作者Lark 帮助中心
最后更新于2024-11-21
评价此内容
提交成功,感谢你的反馈!
未能解决你的问题?请联系在线客服
0
rangeDom
rangeDom