Если доступен XQuery 3.0, вы можете использовать предложение group by
для группировки часовых элементов для каждого дня, а затем применить функцию max
, чтобы выбрать самую высокую температуру. В этом коде я предполагаю, что вы привязали элементы часа к переменной $hours
:
for $hour in $hours
group by $date := $hour/date
return
$date || ": " || max($hour/temperature)
Возвращает два элемента с учетом ваших исходных данных:
"2019-2-19: 20",
"2019-2-18: 18"
Я оставлю это в качестве упражнения для вас, чтобы отсортировать результаты по дате. В этом процессе вы, вероятно, достигнете пределов текущего форматирования дат, поэтому вам нужно будет преобразовать даты в значения, соответствующие типу данных xs:date
, который надежно сортируется.
Если вы ограничены XQuery 1.0, см. эквивалентную группу XQuery 3.0 в версии xquery 1.0 .