我有一个如下所示的xml文件,我想对toyID进行分组,并获得该玩具的销售量总和。并且按最高sales.but的toyID排序我写的代码可以计算玩具的销售总量,但按最高玩具销售金额的顺序不是working.can我知道我做错了哪部分吗?
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>下面是我写的代码:
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>发布于 2012-10-07 01:15:43
此查询
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文档上应用时的
<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>生成所需的、正确的结果
<sale total="27" toy-id="11"/>
<sale total="7" toy-id="33"/>
<sale total="3" toy-id="22"/>等价且略短的查询
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)}"/>发布于 2012-10-06 15:42:12
(:
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)
}
}
)返回
<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最好的^^
https://stackoverflow.com/questions/12757629
复制相似问题