XML/XQuery/group
Версия от 21:22, 25 мая 2010; (обсуждение)
Grouping by department
<source lang="xml">
File: Data.xml <inventory id="inv0001" date="2008-12-19" loc="USA">
<car model="A" id="0001" quantity="1" color="navy"/> <car model="B" id="0002" quantity="1"/> <car model="B" id="0003" quantity="2"/> <car model="C" id="0004" quantity="1" color="white"/> <car model="A" id="0001" quantity="1" color="black"/>
</inventory>
File: Query.xquery
for $d in distinct-values(doc("Data.xml")//car/@model)
let $cars := doc("Data.xml")//car[@model = $d]
order by $d
return <department code="{$d}">{
for $i in $cars order by $i/@id return $i }</department>
Output: <?xml version="1.0" encoding="UTF-8"?> <department code="A">
<car model="A" id="0001" quantity="1" color="navy"/> <car model="A" id="0001" quantity="1" color="black"/>
</department> <department code="B">
<car model="B" id="0002" quantity="1"/> <car model="B" id="0003" quantity="2"/>
</department> <department code="C">
<car model="C" id="0004" quantity="1" color="white"/>
</department>
</source>
Grouping in XQuery
<source lang="xml">
File: Data.xml
<order>
<car dept="A"> <number>1</number> <name>name 1</name> </car> <car dept="B"> <number>2</number> <name>name 2</name> </car> <car dept="B"> <number>3</number> <name>name 3</name> </car> <car dept="C"> <number>4</number> <name>name 4</name> </car>
</order>
File: Query.xquery for $d in distinct-values(doc("Data.xml")//car/@dept) return
<result dept="{$d}" count="{count(doc("Data.xml")//car[@dept = $d])}"/>
Output: <?xml version="1.0" encoding="UTF-8"?> <result count="1" dept="A"/> <result count="2" dept="B"/> <result count="1" dept="C"/>
</source>