Google Sheets ImportXML XPath - 总和与平均值

Google Sheets ImportXML XPath - sum vs avg

GoogleSheets/ImportXML/XPath 编码大师,

快速提问...两个 ImportXML 语句,唯一的区别是 XPath 聚合函数:sum 有效,avg 无效。

=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","sum(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")

=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","avg(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")

注意:对于公式中的页面,目标是找到具有最高@price 的行...然后获取 quantity/volremaining 和价格。但是,当最高价有多行时,我需要对 sum(@volremaining) 和 avg(@price) 进行求和,因为我只想返回一行。我可以使用 [1] 偏移量来获取此值...

=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)][1]/@volremaining")

...但是使 min()/max()/avg() 起作用的练习失败了。

除了 W3C XPath Site 显示带有双括号 ((arg1,arg2,arg3)) 的 fn:avg,而 fn:sum 是单括号 (arg1,arg2,arg3).

非常感谢您的协助。

此致,

G A

Google Sheet 的 IMPORTXML() 函数异常错误,但在这种情况下原因不同。

IMPORTXML() 只支持 XPath 1.0 函数,不支持 XPath 2.0 函数。 sum() 是 XPath 1.0 函数,而 avg()min()max() 是不能在 Google Sheet 中使用的 XPath 2.0 函数。

relevant part of the XPath 1.0 specification - as you can see, avg() is not listed as a number function. It is only listed as a member of the XPath 2.0 and XQuery aggregate functions。顺便说一句,w3schools 与 W3C 无关——您永远不应该相信来自 w3schools 的内容。

综上所述,avg() 在 XPath 表达式中不可用 - 只需检索所有值并使用 Google Sheets function instead to calculate an average.