Google查询语言使用查询中的单元格引用获取结果总和

时间:2018-08-24 23:48:04

标签: google-sheets google-sheets-query google-query-language

您好,感谢您的帮助。我是GQL的新手,但是具有良好的SQL经验,并且认为我可能缺少一些小东西。 我正在处理2张纸

Main sheet

Colum G
InstanceID
i-554532f4693fc6186
i-09554fcda5f2f3262
i-0047551ae514412d5

-

Data Sheet

Colum A                 Colum B
i-554532f4693fc6186      10.12
i-554532f4693fc6186      12.12
i-554532f4693fc6186      13.12
i-554532f4693fc6186      17.12
i-554532f4693fc6186      30.12

我正在尝试编写一个查询,该查询将针对数据表的A列查找与G列中的实例ID匹配的所有行,并返回B列中所有匹配项的AVG,前5个最大值和前5分钟。

我发现我无法将查询指向引用实例ID的单元格。有办法吗? 我正在使用它来尝试获得最大值,并且它适用于1,但是我确定了前5名或任何数字。

=sort(query('HeC-Metrics'!A:B,"select max(B) Where A = 'i-044532f4693fc6186'"))

我可以为每个所需的结果AVG,最小,最大执行不同的查询。我还想引用G列中的单元格,因此不必手动输入InstanceID。

谢谢您的时间。 斯蒂芬

1 个答案:

答案 0 :(得分:1)

因此,这只是获得正确的语法以在查询中使用单元格值作为匹配项的情况

=query(Sheet2!A:B,"select avg(B) where A='"&G2&"' group by A label avg(B)  ''",1)

请注意,如果您已经有了一个要比较的不同ID的列表,则实际上并不需要该分组依据,但是如果没有它,您将无法获得像avg这样的汇总。

要获取最低5,您可以使用filter&sortn

=transpose(sortn(filter(Sheet2!B:B,Sheet2!A:A=G2),5))

(我已经将结果转置为一行(第2行)而不是一行)

或者您可以使用查询

=transpose(query(Sheet2!A:B,"select B where A='"&G2&"' order by B  limit 5 label B '' ",1))

类似地获得可以使用的前5名

=transpose(sortn(filter(Sheet2!B:B,Sheet2!A:A=G2),5,,1,false))

=transpose(query(Sheet2!A:B,"select B where A='"&G2&"' order by B desc limit 5 label B '' ",1))

这引起了一个问题,即是否可以得到这些结果(a)不需要一系列不同的值,以及(b)在单个数组公式中无需复​​制下来。

您当然可以直接从查询中获得不同的ID和平均值。从多个组中获取前n个值或后n个值要困难得多。我在previous question中尝试过,但是它需要冗长且笨拙的公式。