Nano Hash - криптовалюты, майнинг, программирование

Среднее значение атрибута XQuery

У меня есть следующий ввод XML

<foo>
<bar a=1 b=25/>
<bar a=2 b=30/>
<bar a=1 b=35/>
<bar a=2 b=40/>
<foo>

и мне нужно получить следующий результат

<foo>
<bar a=1>average of b = 30</bar>
<bar a=2>average of b = 35</bar>
<foo>

Мне трудно сделать отчетливое значение a.

У меня есть

<foo>
{for $e in doc(XXX.xml)/foo/bar
   return
       <bar a="distinct-values(data($e/@a))">
       {for $c in distinct-values(data($e/@a))
            return avg(data($e/@b))}
       </bar>}
</foo>

Что мне не хватает?

01.11.2015

  • ты решил проблему? 04.11.2015
  • да, большое спасибо 10.11.2015

Ответы:


1

Если ваш процессор XQuery поддерживает XQuery 3.0, вы можете использовать конструкцию group by, которая как раз предназначена для такого случая использования и, на мой взгляд, намного приятнее для чтения:

<foo>{
  for $el in doc(XXX.xml)/foo/bar
  let $a := $el/@a
  group by $a
  return
         <bar a="{$a}">average of b = {avg($el/@b)}
         </bar>
}
</foo>

Он группирует каждый элемент bar по атрибуту a и вычисляет (и выводит) среднее значение атрибута b.

02.11.2015

2

Надеюсь, это то, что вы ищете.

let $doc :=  <foo>
              <bar a="1" b="25"/>
              <bar a="2" b="30"/>
              <bar a="1" b="35"/>
              <bar a="2" b="40"/>
             </foo>

let $result := <foo>
                {for $a in fn:distinct-values($doc//bar/@a)
                  for $b in avg($doc//bar[@a=$a]/@b)
                   return
                       <bar a="{$a}">
                       averge of b = {$b}
                       </bar>
                }
               </foo>
return $result 

Правильный цикл for подойдет.

02.11.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..