1

我的 XML 文档如下所示:

<books>
    <book><author>A</author></book>
    <book><author>B</author></book>
    <book><author>C</author></book>
    <book><author>B</author></book>
    <book><author>C</author></book>
</books>

现在,查询应该返回拥有最多书籍的作者姓名。在这种情况下B,C(因为两者都有 2 本书)。问题是,它必须只有一个查询,因此在这种情况下,找到最大值 (2) 然后搜索有 2 本书的作者不是可接受的解决方案。

4

1 回答 1

3

按作者分组并将即时结果与他们的出版物计数一起存储。然后过滤以仅返回发表次数最多的作者。

let $authors :=
  for $book in //book
  let $author := $book/author
  group by $author
  return <author count="{ count($book) }">{ $author }</author>
return $authors[@count = max($authors/@count)]/data()
于 2013-02-14T21:09:38.953 回答