在QUERY中输出带有计算字段的标准化列

时间:2018-08-31 19:30:53

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

在Google Spreadsheet中,我有一个表达式:

=QUERY(database; "select b,c, where a='anyone-condition' order by c desc";-1)

ab是字符串,而c是数字。
如何在此查询中包含一个计算字段c/sum(c)

3 个答案:

答案 0 :(得分:0)

如果不进行不需要的组,就无法进行总和。您可以在工作表中添加D列以求和。在D中尝试= sum($ C $ 2:$ C)并复制下来。然后这将起作用:

=query(database, "select B,C/D where A='anyone-condition' order by C desc label C/D ''",-1)

答案 1 :(得分:-1)

尽管埃德·纳尔逊(Ed Nelson)完全正确,但您可以通过多个嵌套查询来发挥创意,而无需额外的列即可获得期望的结果。

我有一个简单的示例,它将向您展示方法

数据

enter image description here

解决方案1-更简单,但列名丑陋

 =QUERY(
  A1:C3,"select A,B,C/"&QUERY(
  QUERY(A1:C3,"select sum(C)"),"select * offset 1",0)&"" ,1
 )

enter image description here

解决方案1.1-更复杂,但具有自定义列名

=QUERY(
 A1:C3,"select A,B,C/"&QUERY(
  QUERY(A1:C3,"select sum(C)"),"select * offset 1",0)&
 " label C/"&QUERY(
  QUERY(A1:C3,"select sum(C)"),"select * offset 1",0)&
 " 'C/sum'",1
)

enter image description here

决赛:

您还可以进一步将格式添加到最后一列

Link to working copy

对于您的特定示例,代码可能应该像这样:

=query(database; "select b,"&query(query(database; "select sum(c), where a='anyone-condition' "),"select * offset 1",0)&" where a='anyone-condition' order by c desc";-1)

但是,应该针对真实数据进行测试

满足您的需求吗?

答案 2 :(得分:-1)

问题出在Google Spreadsheet“内核”,而不是我的编码。看看我打印的尖叫声

https://drive.google.com/file/d/1yJbcfVZ1tDmW8WoG224PALRIwyEbX9LH/view?usp=sharing