Google 的查询语言是一种快速而强大的分析 Google 表格中数据的方法,它借用了 SQL 中使用的许多模式。本教程将帮助您熟悉如何使用查询来回答示例数据集中的特定问题的基础知识。
首先我们需要一些示例数据来使用。我们将使用导入函数从维基百科中提取世界人口数据表:
=IMPORTHTML("https://en.wikipedia.org/wiki/List_of_countries_by_population_(United_Nations)", "table", 3)
此函数在上述 URL 中查找第三个表,从每个单元格中抓取数据,并将其导入到您的 Google 表格中。凉爽的!但是,让我们再做一件事情,让查询这些数据变得更容易一些。
单击任何包含数据的单元格以突出显示它,然后按 CMD + A 以突出显示整个表格。突出显示整个表格后,单击“数据”>“命名范围”以打开“命名范围”面板 - 它将从右侧飞出。
命名范围是您可以赋予一组单元格的昵称。让我们命名我们的“国家”。
伟大的!现在我们准备开始查询!
突出显示单元格 J1 — 我们将使用此单元格输入以下所有查询:
显示整个数据集的副本:
=QUERY(countries, "select *",1)
仅显示国家和地区列:
=QUERY(countries, "select B, C",1)
WHERE 子句是开始从数据集中提出更具体问题的好方法。
显示人口大于或等于 1 亿的国家:
=QUERY(countries, "SELECT B, E where E >= 100000000")
显示名称中带有“es”的国家/地区:
=QUERY(countries, "SELECT B where B contains 'es'")
显示名称中不带“es”的国家/地区:
=QUERY(countries, "SELECT B where not B contains 'es'")
显示以“S”开头的国家/地区:
=QUERY(countries, "SELECT B where B STARTS WITH 'S'")
显示以“s”结尾的国家/地区(请记住区分大小写:
=QUERY(countries, "SELECT B where B ENDS WITH 's'")
显示包含“United”的国家/地区:
=QUERY(countries, "SELECT B where B CONTAINS 'United'")
让我们在 AND 子句中添加更具体的内容!
显示美洲人口少于 100,000的所有国家:
=QUERY(countries, "select B, F WHERE C = 'Americas' AND F <= 100000", 1)
AND 子句可以无限地串在一起。
此查询返回美洲人口少于 100,000 和超过 10,000 的所有国家/地区:
=QUERY(countries, "select B, F WHERE C = 'Americas' AND F <= 100000 AND F >= 10000", 1)
也许在探索数据集时您想要做的第一件事就是查看一些简单的聚合:某些字段中的最大值、最小值和平均值。让我们找出数据集中各个国家/地区 2017 年的最大、最小和平均人口:
=QUERY(countries, "select max(F), min(F), avg(F)", 1)
这很酷,
通过稍加修改,我们可以看到每个大陆的最大、最小和平均人口:
=QUERY(countries, "select C, max(F), min (F), avg(F) GROUP by C", 1)
“计数”和“分组依据”一起使用是探索数据集的另一种好方法。结合起来,它们允许您对一列或多列中的项目进行计数,并查看和聚合视图。
让我们使用这两个子句来查看列表中每个地区有多少个国家/地区:
=QUERY(countries, "SELECT C, count(B) GROUP by C", 1)
让我们添加“ORDER BY”子句来显示所有区域的列表,按从最高到最低的升序排列:
=QUERY(countries, "SELECT C, count(B) GROUP by C ORDER by C asc", 1)
“PIVOT”子句会将值聚合到一行中。
例如,如果我们想按地区显示 2017 年所有人口的总和,我们可以使用:
=QUERY(countries, "SELECT sum(F) pivot C", 1)
您还可以通过在查询中执行数学运算来分析数据。
现在让我们显示 2017 年人口占世界总人口百分比的国家列表:
=QUERY(countries, "select B, C, (F / 7550262101) * 100", 1)
我们的百分比数据看起来很酷,但列标题非常可读。我们可以单击单元格并重命名它 - 但我们也可以通过添加“标签”参数将名称设置为查询的一部分:
=QUERY(countries, "select B, C, (F / 7550262101) * 100 Label (F / 7550262101) * 100 'Percentage'", 1)
Google 查询语言文档:https://developers.google.com/chart/interactive/docs/querylanguage
Coding Is For Losers 的 Google Sheets 查询功能概述:https://codingisforlosers.com/google-sheets-query-function/#why