XQuery/XPath ОГРАНИЧИТЬ сумму

Я новичок в XQuery. Мне нужно ограничиться 1 в XQuery, но у меня проблемы.

Я пытаюсь выяснить победителя турнира, находя оценки каждого игрока и суммируя баллы, чтобы получить общие баллы. Затем я сортирую по убыванию и пытаюсь ограничить общий балл, однако у меня возникают проблемы с попыткой ограничить в XQuery.

Здесь я хочу получить высший балл, но я пытался использовать подпоследовательность ($ последовательность, $ начальный элемент, $ количество элементов) и [позиция ()], но, похоже, это не работает.

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 в качестве наивысшего балла? Спасибо


person AlphaWolf    schedule 14.05.2015    source источник
comment
как насчет возврата fn:max($total_scores)   -  person Roaid    schedule 14.05.2015


Ответы (1)


Вы можете использовать функцию fn:max() следующим образом:

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
)
person Roaid    schedule 14.05.2015
comment
Если вы используете fn:max(), вам не нужен порядок. В качестве альтернативы вы можете сохранить порядок, заключить все предложение FLWOR в круглые скобки и использовать позиционный предикат: ( ... )[1] - person joemfb; 14.05.2015