Google Sheets 查询以根据条件提取前三个实例

Google Sheets query to extract the top three instances according to criteria

我有一个带有两个 sheet 的 Google Spreadsheet。 在 sheet "Source" 中,我有一系列国家、城市和地标 - 这些分别位于 A、B 和 C 列中。

在sheet"Sheet for Query"中,有两列:(A)Country,有一个唯一的国家名称列表; (B) Landmark 排名前 3 的城市。在 B 列中,我想有一个查询,为每个国家/地区提供地标数量排名前三的城市,即查询只需要计算每个国家/地区每个城市出现的实例数 return,对于每个国家,出现次数最多的三个城市的名字

这是我创建的示例 sheet 以证明我的意思:https://docs.google.com/spreadsheets/d/1IPwtAHjwjV1A03o9URws-AtDKw3h9QS9UTT0P1PeVN0/edit?usp=sharing

谢谢!

您没有指定符合 top 条件的内容(因此假设这些是第一个列出的 - 更高的 sheet),并且您没有说明 的数量landmark 其中 sheet 中没有数字,但也许:

=textjoin(", ",,query(Source!A:C,"select B where A='"&A2&"' limit 3"))

sheet for Query 的 B2 中,向下复制以适应。

我对此进行了一些思考,'just' 计算了实例的数量,return 每个国家/地区的前 3 名都非常困难。

使用这样的查询分组很简单

=query(A:C," select A,B,count(C) where A<>'' group by A,B  order by A,count(C) desc label A 'Country',B 'City', Count(C) 'Landmarks'",1)

但我不知道有什么方法可以在不经过 2 个进一步步骤的情况下获得每个组的前 3 名

(1) 对每组的结果进行编号(有多种方法,但这里是一种方法)

=(E1=E2)*D1+1

分组后的国家/地区名称在 E 列中。

(2) 筛选D列小于4的结果

=filter(E:G,D:D<4)