xquery 中的 SUM 和 GROUP BY 以及 1 个 xml 文件

2024-03-17

我有一个 SQL 查询:

SELECT ShipVia, SUM(Freight)
FROM Orders
GROUP BY ShipVia

它从访问数据库返回以下值

Ship Via  TotalFreight
   1       $16,185.33
   2       $28,244.85
   3       $20,512.51

我正在尝试将其转换为 xquery (使用 xquery 1.0)

到目前为止我有这个,

xquery version "1.0";
for $x in doc("Orders.xml")/dataroot/Orders
return
<OrderDetails>
{
    $x/ShipVia,
    <TotalFreight>{sum($x/Freight)}</TotalFreight>
}
</OrderDetails>

然而,这会输出每个订单以及运费,就像我一样

SELECT ShipVia, Freight
FROM Orders

in SQL

如何让 xquery 实际上像 SQL 命令一样将每一项相加

例如,这是 Orders.xml 文件中的三个订单

<dataroot>
    <Orders>
        <ShipVia>1</ShipVia>
        <Freight>32.38</Freight>
    </Orders>
    <Orders>
        <ShipVia>1</ShipVia>
        <Freight>11.61</Freight>
    </Orders>
    <Orders>
        <ShipVia>2</ShipVia>
        <Freight>65.83</Freight>
    </Orders>
</dataroot>

编辑:删除不必要的节点(添加重复项)


以下是在 XQuery 1.0 中执行此操作的一种方法(缺少 XQuery 3.0 的本机group by操作员):

let $doc := 
    <dataroot>
        <Orders>
            <ShipVia>1</ShipVia>
            <Freight>32.38</Freight>
        </Orders>
        <Orders>
            <ShipVia>1</ShipVia>
            <Freight>11.61</Freight>
        </Orders>
        <Orders>
            <ShipVia>2</ShipVia>
            <Freight>65.83</Freight>
        </Orders>
    </dataroot>

let $ship_via_values := distinct-values($doc/Orders/ShipVia/text())
for $ship_via_value in $ship_via_values
return
  <OrderDetails>
    <ShipVia>{$ship_via_value}</ShipVia>
    <TotalFreight>{
      sum($doc/Orders[ShipVia=$ship_via_value]/Freight)
    }</TotalFreight>
  </OrderDetails>

该查询返回以下结果:

<OrderDetails>
  <ShipVia>1</ShipVia>
  <TotalFreight>43.99</TotalFreight>
</OrderDetails>
<OrderDetails>
  <ShipVia>2</ShipVia>
  <TotalFreight>65.83</TotalFreight>
</OrderDetails>

...这似乎是所需的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

xquery 中的 SUM 和 GROUP BY 以及 1 个 xml 文件 的相关文章

  • 如何根据另一个属性向 XML 节点添加一个属性?

    我有以下 XML
  • Excel - 使用 FILTERXML 从字符串中提取子字符串

    Background 最近 我一直在尝试更熟悉将分隔字符串更改为 XML 以使用 Excel 进行解析的概念FILTERXML https support microsoft com en us office filterxml funct
  • C# - 具有属性和节点值的 Xml 元素

    我有一些需要反序列化为对象的 Xml XML 是
  • 将 SQL 读取到 DataSet 到 XmlDocument

    下面的代码工作起来很梦幻 但它能变得更紧凑 更接近 C 风格吗 尤其是我对两个问题有怀疑 是不是很丑 老C式 填充fill通过将变量用作参数内 代码可以变得更紧凑而不是通过String C String connectionString s
  • xsl:for-each 循环内的计数器

    如何在 xsl for each 循环内获取一个计数器 该计数器将反映当前处理的元素的数量 例如我的源 XML 是
  • 使用 Python 发布 XML 文件

    我是 Python 新手 需要一些帮助 我的目标是向 URL 发送一些带有 post 请求的 XML 这将触发发送 SMS 我有一个小的 XML 文档 我想将其发布到 URL 我可以在需要发布的 python 代码中引用我的服务器上的 XM
  • python - lxml:强制执行属性的特定顺序

    我有一个 XML 编写脚本 可以为特定的第 3 方工具输出 XML 我使用原始 XML 作为模板来确保构建所有正确的元素 但最终的 XML 看起来与原始的不同 我以相同的顺序编写属性 但 lxml 按自己的顺序编写它们 我不确定 但我怀疑第
  • ASP.NET Web 服务中的 XML 文档中存在非法字符

    我要问并回答我自己的问题 我希望没人介意 但我认为这可能对其他人有用 如果您设置的 ASP NET Web 服务返回的对象包含对 XML 无效的字符 则在将对象序列化为 SOAP xml 并且客户端尝试反序列化该 xml 后 将会引发异常
  • 按属性值选择 XML 节点

  • (不?)使用 JavaScriptSerializer 将 xml 文件(未知模式)转换为 c# 中的 json

    JavascriptSerializer 是将 xml 文件 未知模式 转换为 json 字符串的 工具 吗 这里有一些线程讨论如何在 C 中将 xml 转换为 json 以及一些推荐的专用解决方案 http www phdcc com x
  • Web 服务 SOAP 请求适用于 SOAPUI,但不适用于 PHP

    我已经尝试了几乎所有我能找到的可能的解决方案 但我似乎无法让这个脚本工作 以下是我之前的一些尝试 如何使用 wse php 库通过 SOAP 连接到安全的 Web 服务 https stackoverflow com questions 1
  • Android - 使用 HttpURLConnection 来 POST XML 数据

    我遇到了一些死胡同 需要一些帮助 请 我对 Android 开发 以及一般编码 非常陌生 基本上我需要使用 HttpURLConnection 将 XML 数据发布到 URL 但无法让它工作 我的应用程序从 GET 请求读取并传递 XML
  • XML声明编码

    它实际上有什么作用 根据我的基本理解 XML 只是一种格式化文本 所以不涉及二进制文本转换 我高度怀疑 UTF 8 和 ASCII 编码之间的唯一区别是 ASCII 编码会将所有非 ASCII 字符转换为 XML 实体 而不是仅保留 XML
  • Visual Studio 2012 T4 模板生成 XML 时出现错误

    我正在使用 Visual Studio 2012 从 T4 模板生成 XML 模板的顶部看起来像 lt template language VBv4 hostspecific True debug True gt lt output ext
  • 修改“NodeJS”上的 XML 标签

    有谁知道如何使用 NodeJS 修改 XML 文件的标签值 这是我的 XML 文件
  • xslt 匹配过滤结果集的前 x 项

    对 xslt 很陌生 所以如果这是一个基本问题 请原谅我 我无法在 SO 上或通过 Google 搜索找到答案 我想要做的是返回一组经过过滤的节点 然后对该组中的前 1 或 2 个项目进行模板匹配 然后另一个模板与其余项目匹配 但是如果没有
  • libxml2 用缩进解析文档

    我正在尝试调试正在解析包含缩进的 xml 文档的代码 我正在尝试找出在 xmlReadMemory 函数上使用的正确参数 XML PARSE NOBLANKS 选项对以下方法调用有何作用 xmlReadMemory buffer data
  • 将 XML 反序列化为对象数组

    我正在尝试将 XML 文件反序列化为对象数组 但收到空对象 我的问题看起来与此类似 如何将 xml 反序列化为对象数组 https stackoverflow com questions 7541899 how to deserialize
  • (无限?)JavaScript 代码中的循环

    我有以下 JavaScript 代码来在网站上 显示 XML function createChild node tabindex var child node childNodes var r var tabs for i 0 i
  • XSLT 分组/合并子项(使用密钥)

    我试图了解如何使用我已经编写的代码推导出解决方案 为了简化起见 我将首先解释我想要做什么以及到目前为止我得到了什么 假设我在 XSLT 中有一个 XML 变量 其中包含几个具有相同标题属性的节点 Using Dimitre Novatche

随机推荐