Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 根据google apps脚本中列的总和进行分组和筛选_Loops_Google Apps Script_Alasql - Fatal编程技术网

Loops 根据google apps脚本中列的总和进行分组和筛选

Loops 根据google apps脚本中列的总和进行分组和筛选,loops,google-apps-script,alasql,Loops,Google Apps Script,Alasql,我尝试按供应商和id分组,并从下表中获取总重量的总和: Vendor Id Weight AAA 1 1234 AAA 1 121 AAA 2 5182 BBB 1 311 BBB 1 9132 BBB 2 108 在下面的查询中,变量“row”是输入表 我有下面的查询,按供应商和Id分组,并计算权重 var res_2 = alasql('SELECT [0] as Vendor,[1] as Id, sum([2

我尝试按供应商和id分组,并从下表中获取总重量的总和:

 Vendor Id  Weight
  AAA   1   1234
  AAA   1   121
  AAA   2   5182
  BBB   1   311 
  BBB   1   9132
  BBB   2   108
在下面的查询中,变量“row”是输入表

我有下面的查询,按供应商和Id分组,并计算权重

var res_2 = alasql('SELECT [0] as Vendor,[1] as Id, sum([2]) as Total_Weight FROM ? GROUP BY [0], [1]',[row]);  
结果如下:

[ { Vendor: 'AAA', Id: '1', Total_Weight: 1355 },
  { Vendor: 'AAA', Id: '2', Total_Weight: 5182 },
  { Vendor: 'BBB', Id: '1', Total_Weight: 9443 },
  { Vendor: 'BBB', Id: '2', Total_Weight: 108 }, ]
我的下一部分是我需要循环这个数组,对于每个唯一的供应商,我需要取最大的“Total_Weight”,得到相应的“Id”,并推送变量“vendor” 和“Id”到另一个数组

因此,必须对结果进行评估

[{Vendor: 'AAA', Id: '2'},{Vendor: 'BBB', Id: '1'}]

有谁能告诉我这是否可以通过逻辑实现,或者我是否需要修改查询本身。如果您有任何建议,我们将不胜感激。

我看到您在这里贴了一个标签google sheets。我认为您的问题可以通过以下工具解决:

使用查询公式得到的第一个阶段:

=query(B2:D,"select B, C, sum(D) where B is not null group by C, B order by sum(D) desc")

由于您的表是按最大和值排序的,因此可以使用vlookup函数,为您需要的供应商获取第一行,并构建一个表:

=ArrayFormula(ifna(vlookup(unique(F5:F),F4:H8,{1,2},false)))

或者您可以同时执行这两个阶段(并将查询用作vlookup中的表)

结果是一个包含两列的数组-对应于max sum的vendor和ID


对不起,那是我的错。我正试图在谷歌应用程序脚本中实现这一点
=ArrayFormula(ifna(vlookup(unique(B3:B),query(B3:D,"select B, C, sum(D) where B is not null group by C, B order by sum(D) desc"),{1,2},false)))