首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >order by to work

order by to work
EN

Stack Overflow用户
提问于 2012-10-06 15:13:03
回答 2查看 46关注 0票数 1

我有一个如下所示的xml文件,我想对toyID进行分组,并获得该玩具的销售量总和。并且按最高sales.but的toyID排序我写的代码可以计算玩具的销售总量,但按最高玩具销售金额的顺序不是working.can我知道我做错了哪部分吗?

代码语言:javascript
复制
 ToySale.XML
 <toySale companyID="1" toyID="11" >
   <amount>15</amount>
 </toySale>
 <toySale companyID="3" toyID="11" >
   <amount>12</amount>
 </toySale>
 <toySale companyID="1" toyID="22" >
   <amount>3</amount>
 </toySale>
 <toySale companyID="2" toyID="33" >
   <amount>7</amount>
 </toySale>

下面是我写的代码:

代码语言:javascript
复制
for $t in distinct-values(ToySale.xml")//@toyID)
return <toyID>
            toyID : {$t} 

          <totalSale>{sum(for $sum in (ToySale.xml")//toySale
                     order by $sum/@toyID/../amount     
                     where $t=$sum/@toyID
                     return $sum/@productID/../amount)  }

           </totalSale

        </toyID>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-07 01:15:43

此查询

代码语言:javascript
复制
   for $vId
     in (/*/toySale/@toyID)
                     [index-of(/*/toySale/@toyID, .)[1]]

    let $vSales := /*/toySale[@toyID eq $vId]

    order by sum($vSales/amount) descending

   return
     <sale toy-id="{$vId}" total="{sum($vSales/amount)}"/>

在所提供的XML文档上应用时的

代码语言:javascript
复制
<toySales>
    <toySale companyID="1" toyID="11" >
        <amount>15</amount>
    </toySale>
    <toySale companyID="3" toyID="11" >
        <amount>12</amount>
    </toySale>
    <toySale companyID="1" toyID="22" >
        <amount>3</amount>
    </toySale>
    <toySale companyID="2" toyID="33" >
        <amount>7</amount>
    </toySale>
</toySales>

生成所需的、正确的结果

代码语言:javascript
复制
<sale total="27" toy-id="11"/>
<sale total="7" toy-id="33"/>
<sale total="3" toy-id="22"/>

等价且略短的查询

代码语言:javascript
复制
   for $vId in distinct-values(/*/toySale/@toyID)

     let $vSales := /*/toySale[@toyID eq $vId]

     order by sum($vSales/amount) descending

    return
       <sale toy-id="{$vId}" total="{sum($vSales/amount)}"/>
票数 0
EN

Stack Overflow用户

发布于 2012-10-06 15:42:12

代码语言:javascript
复制
(:
     Find total sales of each toy sold!

     I tried this query here!   http://www.zorba-xquery.com/html/demo
 :)
let $xml := (
    <toySales>
        <toySale companyID="1" toyID="11" >
            <amount>15</amount>
        </toySale>
        <toySale companyID="3" toyID="11" >
            <amount>12</amount>
        </toySale>
        <toySale companyID="1" toyID="22" >
            <amount>3</amount>
        </toySale>
        <toySale companyID="2" toyID="33" >
            <amount>7</amount>
        </toySale>
    </toySales>
)

let $toy-sales := $xml//toySale
for $toy-id in distinct-values($xml//@toyID)
let $total-amount-sold := fn:sum($toy-sales[@toyID = $toy-id]/amount)
return (

   element toy-sale {       
        attribute toy-id { $toy-id },
        text { 
            fn:concat("Total amount sold: ", $total-amount-sold)        
        }
   }
)

返回

代码语言:javascript
复制
<toy-sale toy-id="11">Total amount sold: 27</toy-sale>
<toy-sale toy-id="22">Total amount sold: 3</toy-sale>
<toy-sale toy-id="33">Total amount sold: 7</toy-sale>

xquery #1最好的^^

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12757629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档