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)")

注意:对于公式中的页面,目标是找到价格最高的行。。。然后得到数量/体积和价格。然而,当有多行处于最高价格时,我需要求和(@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站点显示的fn:avg带有双括号((arg1,arg2,arg3)),而fn:sum是单括号(arg1,arg2,arg3)。

非常感谢您的协助。

问候,

G A

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

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

请参阅XPath1.0规范的相关部分——正如您所看到的,avg()并没有作为数字函数列出。它仅作为XPath2.0和XQuery聚合函数的一个成员列出。顺便说一句,w3schools与W3C无关,您永远不应该信任w3school的内容。

总之,avg()在XPath表达式中不可用——只需检索所有值并使用Google Sheets函数来计算平均值。

最新更新