xml - Xquery 中的分组和计数

标签 xml xquery marklogic

我正在尝试计算类似的“itemid_ref”,以获取其中每个 Items ref 的数量:

<?xml version="1.0" encoding="utf-8"?>
<electrystore>
  <itembill>
   <itembill_id>1</itembill_id>
   <itemid_ref>2</itemid_ref>
   <billid_ref>2</billid_ref>
   <price>20000</price> 
  </itembill>
   <itembill>
   <itembill_id>2</itembill_id>
   <itemid_ref>3</itemid_ref>
   <billid_ref>3</billid_ref>
   <price>250000</price> 
  </itembill>
  <itembill>
   <itembill_id>3</itembill_id>
   <itemid_ref>3</itemid_ref>
   <billid_ref>3</billid_ref>
   <price>30000</price> 
  </itembill>
  <itembill>
   <itembill_id>4</itembill_id>
   <itemid_ref>1</itemid_ref>
   <billid_ref>2</billid_ref>
   <price>140000</price> 
  </itembill>
  <itembill>
   <itembill_id>5</itembill_id>
   <itemid_ref>2</itemid_ref>
   <billid_ref>1</billid_ref>
   <price>10000</price> 
  </itembill>
</electrystore>

我试图让 xquery 的输出像这样:

<?xml version="1.0" encoding="UTF-8"?>
<results>
<result>
    <itemid_ref>
       2
    </itemid_ref>
    <numberOfitemes>2</numberOfitemes>
</result>
<result>
    <itemid_ref>
       3
    </itemid_ref>
    <numberOfitemes>2</numberOfitemes>
</result>
<result>
   <itemid_ref>
       1
    </itemid_ref>
    <numberOfitemes>1</numberOfitemes>
</result>

我该怎么做?

最佳答案

没有 group by在 XQuery 1.0 中,但通常您可以使用 distinct-values 获得,只要数据集不是太大。

for $itemid_ref in distinct-values(/electrystore/itembill/itemid_ref)
let $count := count(/electrystore/itembill[itemid_ref = $itemid_ref])
return element result {
  element itemid_ref { $itemid_ref },
  element numberOfitemes { $count }
}

要在大型数据集上表现出色,您可能需要研究 XQuery 处理器中允许访问索引的可用扩展。

在 XQuery 3.0 中它更简单一些:

for $itembill in /electrystore/itembill
let $itemid_ref := $itembill/itemid_ref
group by $itemid_ref
return element result {
  element itemid_ref { $itemid_ref },
  element numberOfitemes { count($itembill) }
}

关于xml - Xquery 中的分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483524/

相关文章:

marklogic - 从 MarkLogic 中的 xquery 模块调用 Shell 脚本

xquery - MarkLogic - 清空大型数据库的最快方法

编辑器中的 Android 布局奇怪的 TextView 行为

php - 更新 mysql 中可能追加或更改其名称的列上的重复行

c++ - EWS 的 CreateItem 操作中的内部服务器错误

xquery - 在 XQuery 中复制 namespace

xml - 查询包含多个 XML 对象的日志文件

android - 我是否需要创建重复的 XML 文件来支持应用程序样式的向后兼容性?

sql-server - SQL替换一个空的XML值

marklogic - 安装 MarkLogic 时依赖项失败