2015-05-14 3 views
1

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

Я пытаюсь найти победителя турнира, найдя оценки всех игроков и подведя итоги, чтобы получить общий балл. Затем я сортирую в порядке убывания и пытаюсь ограничить общий балл, однако у меня возникают проблемы с попыткой ограничения в 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 как самый высокий балл? Благодаря

+0

как насчет возвращения Fn: макс ($ total_scores) – Roaid

ответ

0

Вы можете использовать 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 
) 
+2

Если вы используете 'Fn: макс()', вам не нужен заказ , В качестве альтернативы вы можете сохранить порядок, оберните все предложение FLWOR в скобках и используйте позиционный предикат: '(...) [1]' – joemfb