XQUERY 计数和唯一值

问题描述 投票:0回答:1

在 BaseX 中工作,我试图列出包含书店的 xml 数据库中的出版商数量以及每个出版商有多少本书。所以我有以下 xquery:

let $publisher:= distinct-values(doc("bookstore.xml")/bookstore/book/publisher)

  for $value in ($publisher)
  let $count := count($publisher= $value)
  order by $value ascending
  return concat($value," ",$count)

这仅返回发布者列表和 1:

出版商A 1

出版商B 1

出版商C 1

等等。假设我的 xml 中有每个出版商的几本书,我找不到显示这一点的方法。

let $publisher:= distinct-values(doc("bookstore.xml")/bookstore/book/publisher)

  for $value in ($publisher)
  let $count := count($publisher= $value)
  order by $value ascending

Results:

Publisher A 1

Publisher B 1

Publisher C 1
count xquery distinct-values basex
1个回答
0
投票

由于

$publisher
仅包含不同的发布者,因此
count($publisher= $value)
始终会返回 1。

尝试

let $all-publishers:= doc("bookstore.xml")/bookstore/book/publisher
let $distinct-publishers := distinct-values($all-publishers)
for $value in $distinct-publishers
let $count := count($all-publishers = $value)

但是使用

group by
来处理这个问题可能会更好。

© www.soinside.com 2019 - 2024. All rights reserved.