Googlesheet中的SQL—Query

本文介绍了如何在GoogleSheets中使用QUERY函数高效筛选、聚合、引用和格式化数据,以及IMPORTRANGE函数导入远程工作表的数据。作者详细讲解了QUERY语法及其各种功能,如WHERE、GROUPBY、PIVOT等,提供了实际操作示例和练习题链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

  1. 如何筛选满足某些条件下的所有数据并进行聚合?sumif\sumifs
  2. 如何远程引用另一个Googlesheet中的数据?importrange
  3. 如何远程引用另一Googlesheet中满足某些条件下的所有数据并进行聚合?query

优点

  • 可以引用资料来源
  • 可以 aggregate data, rearrange data, create new data, filter data, sort data
  • Query 里面包含 10 几种函数可以写,就像在 Google Sheet 里面写 SQL 一样,更方便了

QUERY语法

QUERY(data,query,[headers])

  • data - 要执行查询的单元格范围。
    • 每列数据中的数值类型只能是布尔值、数字(包括日期/时间类型)或字符串。
    • 如果有多种数据类型掺杂在单个列中,为便于查询,该列的数据类型由其中大多数数据的类型决定。其他少数数据的类型则被视为空值。
    • 格式一般为:‘sheet名’!A:C,以 ‘ ‘ 单引号选取资料范围
    • 远程引用:importrange(“Googlesheet链接”, “‘sheet名’!A:H”)
  • query - 要执行的查询操作。
    • 查询的值必须括在引号中,否则该值必须是指向包含相关文本的单元格的引用。
      • String 文字格式:以 ‘ ‘ 单引号的方式显示为文字
      • Numbers 数字格式:直接輸入數值就可以了
      • Time/Date 时间或是日期格式:可以将时间转为数值,或是以 date’2020-01-01’ 或是 TEXT(N12, “yyyy-mm-dd”) 的形式处理
    • 可以访问查询语言参考进一步了解有关查询语言的详细信息。
  • headers - [可选] - 数据上方的标题行的数目。如果省略或设置为-1,将根据数据的内容估算该值。

QUERY常用语言

  • SELECT all the data
    • =QUERY(‘ROW DaTa’!A:P,“SELECT *”,1)
  • SELECT specific columns only
    • =QUERY(‘ROW DaTa’!A:P,“SELECT B, D”,1)
  • WHERE
    • =QUERY(‘ROW DaTa’!A:P,“SELECT B, D WHERE D > 100000000”,1)
  • GROUP BY
    • =QUERY(‘ROW DaTa’!A:P,“SELECT C, count(B) GROUP BY C”,1)
  • PIVOT
    • =QUERY(‘RAW Data’!A:P,“select C,sum(L) GROUP BY C PIVOT G”)
  • ORDER BY
    • =QUERY(‘ROW DaTa’!A:P,“SELECT B, C, D ORDER BY D ASC”,1)
  • LIMIT
    • =QUERY(‘ROW DaTa’!A:P,“SELECT B, C, D ORDER BY D ASC LIMIT 10”,1)
  • Offset: 跳过除了表头以外的 10 行
    • =QUERY(‘RAW Data’!A:P,“select * Offset 10”)
  • Arithmetic functions
    • =QUERY(‘ROW DaTa’!A:P,“SELECT B, C, (D / 7162119434) * 100”,1)
  • LABEL
    • =QUERY(‘ROW DaTa’!A:P,"SELECT B, C, (D / 7162119434) * 100 LABEL (D /7162119434) * 100 ‘Percentage’ ",1)
    • =QUERY(‘ROW DaTa’!A:P,"SELECT (D / 7162119434) * 100 LABEL (D /7162119434) * 100 ‘’ ",1)
  • FORMAT
    • 可以用来调整結果,是以怎样的「格式」呈现
    • 日期:=QUERY(‘RAW Data’!A:P,“select K format K ‘dd-mm-yyyy’”)
    • 时间:=QUERY(‘RAW Data’!A:P,“select K format K ‘HH:MM:SS’”)
    • 数值:=QUERY(‘RAW Data’!A:P,“select K format K ‘##,##0.00’”)
  • Aggregation functions
    • =QUERY(‘ROW DaTa’!A:P,“SELECT max(D), min(D), avg(D)”,1)

QUERY顺序

  • Google Sheet Query 函数在写的時候的先后順序:
    • SELECT, WHERE, GROUP BY, PIVOT, ORDER BY, LIMIT, OFFSET, LABEL, FORMAT
  • 排序必须照着这个顺序写!以免函数不能运转!

QUERY实操

引用日期

Where 中要选择日期有两种方法,第一种是转成数值 (推荐!因为简单),第二种方法是转成日期格式

  • 第一种:直接 Q <= 43862 (日期本来就可以自动转成数值),在格式中选择
    • =QUERY(‘RAW Data’!A:Q, “select A,Q Where Q <= 43862”)
    • =QUERY(‘RAW Data’!A:Q, “select A,Q Where Q <=” &J12)
  • 第二种:date’2020-01-01’ 或是 TEXT(N12,”yyyy-mm-dd”)
    • =QUERY(‘RAW Data’!A:P,“select A,E where K= date’2020-01-01’”)
    • =QUERY(‘RAW Data’!A:P,“select A,E where K= date’” & TEXT(N12,“yyyy-mm-dd”) & “'”)

用 Where 筛选多条件

在 SQL 语法里用 in ( )
那在 Google Sheet Query 里有三种方法可以做多条件筛选,给大家参考

  1. 如果有好几个条件想要同时筛选,可以用 OR 或是 AND 组起來
  2. MATCHES ‘(条件1|条件2|条件3)’,这个方法类似 in ( )
    • 条件中文字不需要包单引号,中间用英文 | 隔开
  3. TEXTJOIN 小工具,把 or 和所有条件快速组起來
    = TEXTJOIN (delimiter, ignore_empty, text1, [text2], …)
    delimiter – Separator between each text.
    ignore_empty – Whether to ignore empty cells or not.
    text1 – First text value or range.
    text2 – [optional] Second text value or range.
  4. 模糊比对 Like ‘%A%’

练习题

Googlesheet链接:https://docs.google.com/spreadsheets/d/1pKQyAKZZ532ZEVpqH9SETlQvAXth_1D-Zlkr5dIghh0/edit#gid=813131463

IMPORTRANGE函数

IMPORTRANGE语法

IMPORTRANGE(spreadsheet_url, range_string)

  • spreadsheet_url - 需要引用的数据所在GS的URL
    • spreadsheet_url 的值必须括在双引号中
  • range_string - 符合 “[sheet_name!]range” 格式的字串 (e.g. “Sheet1!A2:B6” 或 “A2:B6”),用于指定要汇入的范围
    • sheet_name为选择性使用;不写IMPORTRANGE 会由第一份工作表中的指定范围汇入
    • range_string 的值必须放置在引号内

练习题

Googlesheet链接:https://docs.google.com/spreadsheets/d/1tOJ-hjYb8GUvtEUIB4YNekYDwpd7huRHT-bY_CO4-s4/edit#gid=2057640269

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值