Loops 根据google apps脚本中列的总和进行分组和筛选
我尝试按供应商和id分组,并从下表中获取总重量的总和: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
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)))