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 本あるため)。問題は、クエリが 1 つだけである必要があることです。そのため、最大数 (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 に答える