XQuery/XPath限制总和

XQuery/XPath限制总和,xpath,xquery,xpath-2.0,xquery-3.0,Xpath,Xquery,Xpath 2.0,Xquery 3.0,我不熟悉XQuery。我需要在XQuery中限制1,但我遇到了问题 我试图通过查找每个球员的得分并将得分相加得到总得分来找出锦标赛的获胜者。然后我按降序排序并尝试限制总分,但是在XQuery中尝试限制总分时遇到了问题 在这里,我想获得最高分,但我尝试使用子序列($sequence,$start item,$number of items)和[position()],但似乎不起作用 for $pair_ids in distinct-values(fn:doc("tourny.xml")/Comp

我不熟悉XQuery。我需要在XQuery中限制1,但我遇到了问题

我试图通过查找每个球员的得分并将得分相加得到总得分来找出锦标赛的获胜者。然后我按降序排序并尝试限制总分,但是在XQuery中尝试限制总分时遇到了问题

在这里,我想获得最高分,但我尝试使用子序列($sequence,$start item,$number of items)和[position()],但似乎不起作用

for $pair_ids in distinct-values(fn:doc("tourny.xml")/Competition[@date = "2012-12-12"]/Tennis/Partner/@pair_id)
let $total_scores := sum(fn:doc("tourny.xml")/Competition[@date = "2012-12-12"]/Tennis/Partner[@pair_id = $pair_ids]/@score)
order by $total_scores descending
return 
    $total_scores
输出给我的是:

$total_scores:
34
11
20
我如何限制结果,使我只得到34分作为最高分? 谢谢

您可以使用以下功能:

fn:max(
for $pair_ids in distinct-values(fn:doc("tourny.xml")/Competition[@date = "2012-12-12"]/Tennis/Partner/@pair_id)
let $total_scores := sum(fn:doc("tourny.xml")/Competition[@date = "2012-12-12"]/Tennis/Partner[@pair_id = $pair_ids]/@score)
order by $total_scores descending
return $total_scores
)
返回fn:max($total_scores)如何如果您使用
fn:max()
,则不需要按订单。或者,您可以保留顺序,将整个FLWOR子句括在括号中,并使用位置谓词:
(…)[1]